Chrome 在提交按钮上使用 AngularJS 指令时不提交表单
Chrome doesn't submit form when using AngularJS directive on submit button
我写了一个 AngularJS 指令,如下所示,它在表单提交时或单击按钮时禁用 HTML 按钮,并替换按钮的内部文本。这在 IE 和 Firefox 中完美运行,但 在 Chrome 中,修改按钮的代码成功执行,但是表单不会提交,并且不会向服务器发出请求。
HTML 按钮的示例:
<button submit-button submit-title="Generating Report..."
type="submit" class="btn btn-primary">
<i class="fa fa-database mr-xs"></i>Generate Report
</button>
AngularJS 指令:
(function () {
function submitButton() {
return {
restrict: 'A',
require: '^form',
scope: {
submitTitle: '@'
},
link: function ($scope, $element, $attributes) {
$element.on('click', function () {
var element = $element[0];
element.innerHTML = element.innerHTML
.replace(element.innerText, $attributes.submitTitle);
element.disabled = true;
$element.addClass('disabled');
});
}
};
}
angular.module('adminApp', [])
.directive('submitButton', submitButton);
})();
我已经使用 Fiddler 查看请求和响应,并且可以确认在单击按钮或提交表单时 Chrome 中没有发出请求。任何帮助将不胜感激。
如果您在附加的单击事件处理程序中禁用该元素,Chrome 将不会提交表单。
改为使用 submit
事件:
$element.on('submit', function() {
// Do stuff
});
我写了一个 AngularJS 指令,如下所示,它在表单提交时或单击按钮时禁用 HTML 按钮,并替换按钮的内部文本。这在 IE 和 Firefox 中完美运行,但 在 Chrome 中,修改按钮的代码成功执行,但是表单不会提交,并且不会向服务器发出请求。
HTML 按钮的示例:
<button submit-button submit-title="Generating Report..."
type="submit" class="btn btn-primary">
<i class="fa fa-database mr-xs"></i>Generate Report
</button>
AngularJS 指令:
(function () {
function submitButton() {
return {
restrict: 'A',
require: '^form',
scope: {
submitTitle: '@'
},
link: function ($scope, $element, $attributes) {
$element.on('click', function () {
var element = $element[0];
element.innerHTML = element.innerHTML
.replace(element.innerText, $attributes.submitTitle);
element.disabled = true;
$element.addClass('disabled');
});
}
};
}
angular.module('adminApp', [])
.directive('submitButton', submitButton);
})();
我已经使用 Fiddler 查看请求和响应,并且可以确认在单击按钮或提交表单时 Chrome 中没有发出请求。任何帮助将不胜感激。
Chrome 将不会提交表单。
改为使用 submit
事件:
$element.on('submit', function() {
// Do stuff
});