无法禁用 jQuery 验证

Cannot disable jQuery Validation

我无法禁用表单验证。我尝试了其他问题和论坛的许多解决方案,例如:

1. $("#PatientForm").validate({ ignore: "*" });
2. $("#submitButton").addClass("cancel");
3. $('#PatientForm').validate().settings.ignore = ["*"];
4. $("#PatientForm").validate({ onsubmit: false });
5. $('#PatientForm').validate({ submitHandler: null });

而jQuery Validate 仍然要验证所有字段。我正在尝试禁用复选框更改。复选框更改处理程序受到限制,因为我已经使用 FireBug 检查它并且所有调用(1. 到 5.)都在没有任何错误消息的情况下执行。

这是我的验证配置:

    // JQUERY VALIDATE - TURN ON VALIDATION ON SUBMIT + VALIDATE PESEL BEFORE SAVE
    $('#PatientForm').validate({
        submitHandler: function(form) {
            var pesel = $('#Pesel').val();
            var isValid = $(form).valid();
            $.ajax({
                type: 'GET',
                url: '@Url.Action("IsPeselExisting", "Admin")',
                data: { peselPar: pesel },
                success: function (msg) {
                    if (msg["exists"] == 'true')
                    {
                        if (isValid == true)
                        {
                            if (confirm("Wprowadzony pesel już istnieje! Czy na pewno chcesz dodać użytkownika o kolidującym peselu"))
                            {
                                form.submit();
                            }
                        }
                    }
                    else
                    {
                        if (isValid == true)
                        {
                            form.submit();
                        }
                    }
                }
            });
        }
    });

    // JQUERY VALIDATE - GENERAL SETTINGS
    $('#PatientForm').validate().settings.ignore = [];
    $("#PatientForm").validate({ ignore: ".ignored" });

    // JQUERY VALIDATE - GENERAL SETTINGS
    $.validator.addMethod("regex", function (value, element, regexp) {
        return regexp.test(value);
    }, "");

提前致谢...

一旦 jQuery Validate 插件在表单上初始化,就没有已知的方法来禁用它...句号。

您尝试失败的原因是您不能在同一表单上多次调用 .validate() 方法。初始化后,将忽略对 .validate() 的任何后续调用。

$('#myform').validate({ /* your settings */ });  // <- initialize plugin

// later ...

$('#myform').validate({ /* new settings */ }); // <- ALWAYS IGNORED!!

但是,要提交表单数据 而不进行验证 ,请在 type="submit" inputbutton 上放置一个 class="cancel"元素。这样做的好处是虽然验证被绕过,但插件没有,所以如果你使用 submitHandler,它仍然会被触发。

<input type="submit" class="cancel" value="SAVE" />

<button type="submit" class="cancel">SAVE</button>

工作演示:http://jsfiddle.net/yan98120/


其他问题:

  1. 您不能在 ajax() 函数内的任何地方执行 form.submit();将 submit() 放在 ajax() success 回调中只是胡说八道。 .ajax() 中的 success 回调意味着表单已经通过 Ajax 成功提交。因此,当 Ajax 已经完成发送表单时,success 中的 .submit() 根本没有意义。

  2. 您的 "settings" 部分也毫无意义。首先,您使用 .settings.ignoreignore 设置为 [],然后立即在 .validate() 方法中将 ignore 设置为 ".ignored"。为您的设置选择一种方法和一组参数并坚持下去。

正如我试图解释你的其他问题之一,please see the SO Tag Wiki page for a basic demo and hints on proper usage