无法禁用 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"
input
或 button
上放置一个 class="cancel"
元素。这样做的好处是虽然验证被绕过,但插件没有,所以如果你使用 submitHandler
,它仍然会被触发。
<input type="submit" class="cancel" value="SAVE" />
或
<button type="submit" class="cancel">SAVE</button>
工作演示:http://jsfiddle.net/yan98120/
其他问题:
您不能在 ajax()
函数内的任何地方执行 form.submit()
;将 submit()
放在 ajax()
success
回调中只是胡说八道。 .ajax()
中的 success
回调意味着表单已经通过 Ajax 成功提交。因此,当 Ajax 已经完成发送表单时,success
中的 .submit()
根本没有意义。
您的 "settings" 部分也毫无意义。首先,您使用 .settings.ignore
将 ignore
设置为 []
,然后立即在 .validate()
方法中将 ignore
设置为 ".ignored"
。为您的设置选择一种方法和一组参数并坚持下去。
正如我试图解释你的其他问题之一,please see the SO Tag Wiki page for a basic demo and hints on proper usage。
我无法禁用表单验证。我尝试了其他问题和论坛的许多解决方案,例如:
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"
input
或 button
上放置一个 class="cancel"
元素。这样做的好处是虽然验证被绕过,但插件没有,所以如果你使用 submitHandler
,它仍然会被触发。
<input type="submit" class="cancel" value="SAVE" />
或
<button type="submit" class="cancel">SAVE</button>
工作演示:http://jsfiddle.net/yan98120/
其他问题:
您不能在
ajax()
函数内的任何地方执行form.submit()
;将submit()
放在ajax()
success
回调中只是胡说八道。.ajax()
中的success
回调意味着表单已经通过 Ajax 成功提交。因此,当 Ajax 已经完成发送表单时,success
中的.submit()
根本没有意义。您的 "settings" 部分也毫无意义。首先,您使用
.settings.ignore
将ignore
设置为[]
,然后立即在.validate()
方法中将ignore
设置为".ignored"
。为您的设置选择一种方法和一组参数并坚持下去。
正如我试图解释你的其他问题之一,please see the SO Tag Wiki page for a basic demo and hints on proper usage。