我有一个需要一些帖子验证警告的表单。概念很简单,允许值,但超出正常范围。处理这个问题的方法是验证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();
});
答案 0 :(得分:4)
$('.submitBtn').on('click', function(){
var $frm = $ ("#form");
$frm.validate()
if($frm).valid()){
submitHandler();
$frm.submit()
}
})
$('.cancel').on('click', function(){
var $frm = $ ("#form");
if($frm.valid()){
// Do Some action ...;
}
})
或强> 的 您可以在buttonsm上添加点击事件,每次根据clikcef的按钮更改参数,有关详细信息,请参阅示例 [DEMO] [1]
请参阅jquery docs http://docs.jquery.com/Plugins/Validation[1]:http://jsfiddle.net/abaksheyev/jKuVa/1/
还有更多智能方法
submitHandler: function (form) {
var val = $("input[type=submit][clicked=true]").val() // add this line to handler
.......
//Add this into document.ready
$("form input[type=submit]").click(function() {
$("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
$(this).attr("clicked", "true");
});