我想编写一个脚本,当用户单击它们时禁用所有提交按钮,我编写了以下 Jquery 脚本,它将在所有视图上可用,但它不起作用:-
$(document).ready(function () {
$(":input[type=submit]").click({
this.attr('disabled', 'disabled');
});
})
那么我的代码有什么问题?BR
我想编写一个脚本,当用户单击它们时禁用所有提交按钮,我编写了以下 Jquery 脚本,它将在所有视图上可用,但它不起作用:-
$(document).ready(function () {
$(":input[type=submit]").click({
this.attr('disabled', 'disabled');
});
})
那么我的代码有什么问题?BR
$(document).ready(function () {
$("input[type='submit']").click(function() {
$(this).prop('disabled', true);
});
});
或者
$(document).ready(function () {
$("input[type='submit']").click(function() {
this.disabled = true;
});
});
如果提交按钮正在提交表单,您将不得不阻止将重新加载页面的默认操作:
$("input[type='submit']").click(function(e) {
e.preventDefault();
$(this).prop('disabled', true);
});
});
我认为这就是你要找的:
$("input[type=submit]").click(function() {
$(this).attr('disabled', 'disabled');
// if you want to disable all buttons on the form do the following
// $("input[type=submit]").attr("disabled", "disabled");
});
编辑:
adeneo 是正确的。使用该prop()
方法可能是一个好主意。我个人从来没有遇到过禁用 via 的问题attr('disabled', 'disabled')
,但我之前听说过有人提到它。
但是,请解释 attr-vs-prop-change-in-1-6上的这个 jquery 论坛帖子可能会更多地解释人们在使用 attr() 方法时遇到禁用问题的原因。他们很可能将其设置为 true 而不是禁用。
像这样的东西怎么样:
$(document).ready(function () {
$("form").submit({
$("input[type=submit]").attr('disabled', 'disabled');
return true;
});
});
以上将是实现您打算做的更好的方法。如果您坚持让您的代码工作,请删除 jQuery 选择器中的:
before input
。
您说您要禁用所有按钮,但“this”关键字仅引用导致事件被抛出的项目,因此您需要:
$(document).ready(function () {
$("input[type='submit']").click({
$("input[type='submit']").attr("disabled","disabled");
});
});
您的脚本不起作用的原因this
是指的是 HTML 元素,而不是 jQuery 对象。您需要将其包装在 jQuery 对象中以在其上运行函数,例如attr
:
$(this).attr('disabled', 'disabled');
此外,如果您想禁用所有提交按钮,则需要执行新的选择并将它们全部禁用。这段代码应该做你想做的事:
// Passing a function to $ will run it on document ready
$(function () {
$("input[type=submit]").click({
// Select all submit inputs and disable them
$('input[type=submit]').attr('disabled', 'disabled');
});
});
现在,单击一个提交按钮时应禁用所有提交按钮。
尝试在输入选择器中不使用“:”并使用 $(this)。
$(function () {
$("input[type=submit]").click(function() {
$(this).attr('disabled', 'disabled');
});
})
仅供参考 - 我使用了 $(document).ready 的简写语法。