如何在提交表单时没有任何错误地禁用提交按钮

时间:2010-05-07 16:31:25

标签: javascript jquery submit

我想在用户提交表单时禁用提交按钮,这样他就不会再点击提交按钮两次。

所以我在我的页面中编写了以下javascript


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

这很有效。但是当我应用jquery验证库并附加以下代码时


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

    $("form").validate({
            errorClass: "jqueryError",
            errorElement: 'label',
            success: 'jqueryValid',
            messages: {
                TopicCategory: {
                    required: 'Please choose a category for topic.'
                },
                TopicSubcategoryId: {
                    required: 'Please choose a subcategory for topic.'
                },
                TopicTitle: {
                    required: 'Please enter a title for topic.'
                }
            }
        });
})

提交表单后提交按钮被禁用,即使网站中有不完整的输入(即表单有错误,要求用户正确填写)。
当用户完成表格更正所有错误时,提交按钮被禁用。

如何首先检查表单中是否有错误,然后禁用提交按钮,然后最后提交。

由于

3 个答案:

答案 0 :(得分:7)

将以下参数添加到jQuery Validate:

submitHandler: function(form) {
    $(':submit', form).attr('disabled', 'disabled');
    form.submit();
}

答案 1 :(得分:1)

我没有使用jquery验证器插件但是在这里阅读文档

http://docs.jquery.com/Plugins/Validation/validate

你可以

1)禁用submitHandler回调中的按钮

2)保留现有的禁用代码,但随后重新启用invalidHandler回调中的按钮

答案 2 :(得分:-1)

我还没有开始使用jQuery。但我想,你可以这样做:

$(document).ready(function(){
    $("form").submit(function(){
    });

    $("form").validate({
            errorClass: "jqueryError",
            errorElement: 'label',
            success: 'jqueryValid',
            messages: {
                TopicCategory: {
                    required: 'Please choose a category for topic.'
                },
                TopicSubcategoryId: {
                    required: 'Please choose a subcategory for topic.'
                },
                TopicTitle: {
                    required: 'Please enter a title for topic.'
                }
            }
       $("form").find('input[type=submit]').attr('disabled', 'disabled');

        });
})