我目前正在设置 jQuery 验证插件以在我们的项目中使用。
默认情况下,会自动设置一些事件来进行处理。 IE。所有输入火验证上的焦点输入/输出、按键事件。我希望它仅在单击提交按钮时触发。
此功能似乎内置于插件中,这使得很难做到这一点(不修改插件代码,这不是我想要做的)。
我在插件代码原型(prototype)方法中找到了eventDelegate函数调用:
$(this.currentForm)
.validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
.validateDelegate(":radio, :checkbox, select, option", "click", delegate);
当我从插件中删除这些行时,我得到了结果,但是我宁愿在插件之外做一些事情来实现这一点。
有人可以帮我吗?如果您需要更多详细信息,请告诉我。我在谷歌上搜索过但收效甚微。
谢谢
编辑: 我基本上试图仅在提交事件被触发时验证表单。默认情况下,每次焦点在输入控件中丢失时,插件都会进行验证。
最佳答案
找到答案了。它作为验证方法中选项的一部分(隐藏?)消失了。
请参阅本页上的 onfocusout 等选项: http://docs.jquery.com/Plugins/Validation/validate#options
我可以将其设置为 false。
这是我设置验证器的代码(希望其他人会发现这很有用):
$(document).ready(function() {
$("form").each(function() {
$(this).validate({
validateDelegate: function() { },
onsubmit: true,
onkeydown: false,
onkeyup: false,
onfocusin: false,
onfocusout: false,
errorContainer: "#PanelError",
errorLabelContainer: "#PanelError ul",
wrapper: "li",
ignoreTitle: true,
errorClass: "Error",
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("#" + element.id)
.addClass(errorClass);
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("#" + element.id)
.removeClass(errorClass);
}
});
});
});
关于jquery - 在 jQuery 验证插件中自定义事件委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2762458/