如何在jQuery验证后禁用/启用提交按钮?

如何在jQuery验证后禁用/启用提交按钮?,jquery,jquery-validate,Jquery,Jquery Validate,我想在“on_click”事件之后禁用表单的提交按钮,这个jscript成功地做到了这一点,但是当使用jquery验证了错误的电子邮件,然后按下提交按钮时,在我更正了电子邮件之后,该按钮仍然被禁用。我怎样才能解决这个问题 Jscript: <script src="js/libs/modernizr-2.6.2.min.js"></script> <script src="lib/jquery-1.11.1.js"></script> &l

我想在“on_click”事件之后禁用表单的提交按钮,这个jscript成功地做到了这一点,但是当使用jquery验证了错误的电子邮件,然后按下提交按钮时,在我更正了电子邮件之后,该按钮仍然被禁用。我怎样才能解决这个问题

Jscript:

<script src="js/libs/modernizr-2.6.2.min.js"></script>
<script src="lib/jquery-1.11.1.js"></script>    
<script src="lib/jquery.js"></script>
<script src="dist/jquery.validate.js"></script> 
<script>
$.validator.setDefaults({
    submitHandler: function() {
        signupForm.submit();
    }
});

$().ready(function() {
    //Desactiva el submit
    $(".submit").click(function () {
       $(".submit").attr("disabled", true);
       $('#signupForm').submit();
     });

    // validate signup form on keyup and submit
    $("#signupForm").validate({
        wrapper: "div",
        rules: {
            email: {
                required: true,
                email: true
            },
            password: {
                required: true,
                minlength: 5
            }
        },
        messages: {
            email: "Use una cuenta de correo v&aacute;lida",
            password: {
                required: "Ingrese su contraseña",
                minlength: "La contrase&ntilde;a al menos debe tener 5 caracteres"
            }
        }
    });


});
</script>

$.validator.setDefaults({
submitHandler:function(){
signupForm.submit();
}
});
$().ready(函数()){
//迪西瓦酒店
$(“.submit”)。单击(函数(){
$(“.submit”).attr(“已禁用”,true);
$(“#注册表单”).submit();
});
//在键盘上验证注册表格并提交
$(“#注册表”).validate({
包装器:“div”,
规则:{
电邮:{
要求:正确,
电子邮件:真的
},
密码:{
要求:正确,
最小长度:5
}
},
信息:{
电子邮件:“使用una cuenta de correo vá;lida”,
密码:{
必需:“安格尔苏康瑟斯尼娜”,
minlength:“La contraseñ;一个5克拉的阿尔·梅诺斯·德贝·特内尔”
}
}
});
});
形式



科雷奥电气公司;尼科




绑定到
提交
事件,而不是单击按钮

$('#signupForm').submit(function(){
   $(this).find('.submit').prop('disabled',true);
});

或者,在插件的
submitHandler
选项中禁用
您不能禁用
单击事件上的按钮;因为如果单击按钮时表单仍然无效,则无法再次单击它。只有在表单成功通过验证后才能禁用它

<script>
$(document).ready(function() {

    $("#signupForm").validate({
        wrapper: "div",
        rules: {
            email: {
                required: true,
                email: true
            },
            password: {
                required: true,
                minlength: 5
            }
        },
        messages: {
            email: "Use una cuenta de correo v&aacute;lida",
            password: {
                required: "Ingrese su contraseña",
                minlength: "La contrase&ntilde;a al menos debe tener 5 caracteres"
            }
        },
        submitHandler: function(form) { // <- pass 'form' argument in
            $(".submit").attr("disabled", true);
            form.submit(); // <- use 'form' argument here.
        }
    });

});
</script>
使用插件的
submitHandler
选项进行此操作,因为只有当表单通过验证时,它才会在单击按钮时触发

<script>
$(document).ready(function() {

    $("#signupForm").validate({
        wrapper: "div",
        rules: {
            email: {
                required: true,
                email: true
            },
            password: {
                required: true,
                minlength: 5
            }
        },
        messages: {
            email: "Use una cuenta de correo v&aacute;lida",
            password: {
                required: "Ingrese su contraseña",
                minlength: "La contrase&ntilde;a al menos debe tener 5 caracteres"
            }
        },
        submitHandler: function(form) { // <- pass 'form' argument in
            $(".submit").attr("disabled", true);
            form.submit(); // <- use 'form' argument here.
        }
    });

});
</script>

$(文档).ready(函数(){
$(“#注册表”).validate({
包装器:“div”,
规则:{
电邮:{
要求:正确,
电子邮件:真的
},
密码:{
要求:正确,
最小长度:5
}
},
信息:{
电子邮件:“使用una cuenta de correo vá;lida”,
密码:{
必需:“安格尔苏康瑟斯尼娜”,
minlength:“La contraseñ;一个5克拉的阿尔·梅诺斯·德贝·特内尔”
}
},

submitHandler:function(form){/如果您无权访问表单验证初始化,此方法可以帮助:

            jQuery('#form').on('submit', function () {
                if (jQuery(this).data('form_is_invalid')) {
                    jQuery(this).data('form_is_invalid', false);
                } else {
                    jQuery(this).find('.submit').prop('disabled', true);
                }
            }).on('invalid-form.validate', function () {
                jQuery(this).data('form_is_invalid', true);
            });

最好将其留给插件中的
submitHandler
。否则,您的
submit()
处理程序将完全干扰或绕过验证。@Artenation.这是一个好问题。@Sparky.解释得很好。您节省了很多时间。谢谢