2

我想编写一个脚本,当用户单击它们时禁用所有提交按钮,我编写了以下 Jquery 脚本,它将在所有视图上可用,但它不起作用:-

$(document).ready(function () {
    $(":input[type=submit]").click({
        this.attr('disabled', 'disabled');

    });
})

那么我的代码有什么问题?BR

4

6 回答 6

2
$(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);
    });
});
于 2012-05-06T02:12:57.197 回答
0

我认为这就是你要找的:

$("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 而不是禁用。

于 2012-05-06T02:11:33.633 回答
0

像这样的东西怎么样:

$(document).ready(function () {
    $("form").submit({
        $("input[type=submit]").attr('disabled', 'disabled');
        return true;
    });
});

以上将是实现您打算做的更好的方法。如果您坚持让您的代码工作,请删除 jQuery 选择器中的:before input

于 2012-05-06T02:11:55.460 回答
0

您说您要禁用所有按钮,但“this”关键字仅引用导致事件被抛出的项目,因此您需要:

$(document).ready(function () {
    $("input[type='submit']").click({
        $("input[type='submit']").attr("disabled","disabled");

    });
});
于 2012-05-06T02:13:59.100 回答
0

您的脚本不起作用的原因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');
    });
});

现在,单击一个提交按钮时应禁用所有提交按钮。

于 2012-05-06T02:14:10.573 回答
0

尝试在输入选择器中不使用“:”并使用 $(this)。

$(function () {
    $("input[type=submit]").click(function() {
        $(this).attr('disabled', 'disabled');
    });
})

仅供参考 - 我使用了 $(document).ready 的简写语法。

于 2012-05-06T02:17:02.587 回答