【发布时间】:2012-09-25 21:14:08
【问题描述】:
我有一个需要一些验证后警告的表单。这个概念很简单,这些值是允许的,但超出了正常范围。处理方式是在验证 submitHandler 中:
$('form').validate({
highlight: function (element, errorClass) {$(element).addClass("invalidElem");},
unhighlight: function (element, errorClass) {$(element).removeClass("invalidElem");},
errorPlacement: function (error, element) {element.parent().parent().next().children().last().append(error);},
errorClass: "errorMsg",
submitHandler: function (form) {
if (!WeightsRangeValidator("Height", txtHeight, heightWarning)) {
return false;
}
if (!WeightsRangeValidator("Weight", txtWeight, weightWarning)) {
return false;
}
form.submit();
}
});
问题是表单上同时有提交和取消按钮。取消按钮确实具有“取消”类,因此不会执行验证。不过,submitHandler 函数仍在被调用。我认为必须有一种方法来检测正在单击哪个提交按钮以绕过 submitHandler 处理程序的内容。
这是一个工作的 jsFiddler:http://jsfiddle.net/scarleton/ZSVFP/
表单有三种有效状态:复选框(但不是两者)或文本框和下拉列表。单击“确定”时验证有效。问题出现在取消上。如果您在文本框中输入任何内容并按取消,验证仍会尝试验证。我尝试添加以下处理程序,如果表单有效,它允许取消,但如果在文本框中输入字母则不允许。
btnCancel.click(function () {
txtHeight.rules("remove");
txtWeight.rules("remove");
ddlDevice.rules("remove");
$("#form").submit();
});
【问题讨论】:
-
您是否尝试在每个按钮上添加两个事件单击?并在提交 btn 调用 $('from').submit()?
-
jQuery 验证器能够以比这更简单的方式添加自定义规则 - stackoverflow.com/questions/241145/…