单击后禁用表单按钮

时间:2012-02-19 16:59:58

标签: javascript jquery google-chrome

我想在点击后禁用表单提交按钮,以防止多次提交表单。我使用以下代码禁用该按钮并添加一个使其显示为禁用的类:

$("form button.primaryAction").click(function() {
    $(this).prop("disabled", true).addClass('disabledBtn');
    return true;
});

它在IE和Firefox中运行良好,但在Chrome 17中,表单无法提交。我想我可以用以下代码替换上面的代码:

$("form button.primaryAction").click(function() {
    $(this).prop("disabled", true).addClass('disabledBtn');

    var form = // how can I get a reference to the form from the button 'this' ?
    form.submit();
    return false;
});

但是你可以看到我不知道如何从点击处理程序中获取对表单的引用。

3 个答案:

答案 0 :(得分:3)

this.form会为您提供参考。

所有表单元素(按钮,输入,选择等)都有一个表单属性,指向它们所属的表单元素。

答案 1 :(得分:2)

您可以通过使用jquery的submit()函数而不是click()函数来绕过此问题。包含的函数只会在发生提交操作后触发

答案 2 :(得分:1)

你的代码没有意义!首先禁用默认提交,然后手动提交。

$("form button.primaryAction").click(function() {
    $(this).prop("disabled", true).addClass('disabledBtn');

    var form = this.form;
    form.submit(); // submits the form
    return false;  // disable the defualt submit.... ?!
});

请勿取消自动提交,就是这样!

$("form button.primaryAction").click(function() {
    $(this).prop("disabled", true).addClass('disabledBtn');
});

我会这样写:

$("form").submit(function() {
    $('button.primaryAction').prop("disabled", true).addClass('disabledBtn');
});