Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JQuery验证提交程序和表单提交成功后,如何阻止输入?_Jquery_Validation_Onsubmit - Fatal编程技术网

在JQuery验证提交程序和表单提交成功后,如何阻止输入?

在JQuery验证提交程序和表单提交成功后,如何阻止输入?,jquery,validation,onsubmit,Jquery,Validation,Onsubmit,我的表格中有两种验证方法。 A.JQuery验证 BForm.Submit()处理程序中有两个复杂的硬编码规则 一旦a&b验证成功,我需要禁用submit按钮,这样用户就不会提交两次 到目前为止,我最好的尝试是在JQuery验证中添加一个“submitHandler”,以便 jQuery("#myForm").validate( { submitHandler: function (form) { form.submit({ success: fu

我的表格中有两种验证方法。 A.JQuery验证 BForm.Submit()处理程序中有两个复杂的硬编码规则

一旦a&b验证成功,我需要禁用submit按钮,这样用户就不会提交两次

到目前为止,我最好的尝试是在JQuery验证中添加一个“submitHandler”,以便

jQuery("#myForm").validate(
{
    submitHandler: function (form) {
        form.submit({
            success: function (submittedForm, action) {
                alert("submitting");
                $('input[type=submit]', submittedForm).attr('disabled', 'disabled');
            }
        });
    }
});     
当然,这似乎不起作用。当它到达SubmitHandler时,验证的两个阶段都已经运行了?如果(a)JQuery验证失败,则不会触发此事件。但是,如果(b)自定义验证失败,则尽管未提交表单,但仍会运行该验证。如果两个(a&b)都通过了,则会运行它,但不会到达内部“成功”回调。所以我的输入永远不会被禁用

下面是n个提交验证中的1个的示例(这是一个动态表单,还有其他类似的验证,其中.submit用于在验证失败时返回false)

谢谢,
Justin

由于您正试图避免多次提交,因此,与其在验证后禁用提交按钮,不如在验证之前禁用它,然后在验证失败时重新启用它。

同意这将是一个合适的解决方案。但是,我看不到任何连接validationFailed事件的方法。请记住,它需要同时处理JQuery验证失败和OnSubmit失败。在调用验证之前,我还可以使用什么事件处理程序来禁用它?
$('#myForm').submit(function () {
    // If one is checked they must both be checked.
    if ($(SessionRadioId_2).is(':checked') || $(SessionRadioId_4).is(':checked')) {
        if (!($(SessionRadioId_2).is(':checked')) || !($(SessionRadioId_4).is(':checked'))) {
            alert('If you plan on attending "ABC" you must select it in both Session 2 & 3.');
            return false;
        }
    }