Rus*_*ell 7 validation jquery jquery-validate event-delegation
我目前正在设置jQuery验证插件,以便在我们的项目中使用.
默认情况下,会自动设置一些事件进行处理.即关注进/出,关键事件对所有输入进行火灾验证.我希望它只在单击提交按钮时触发.
这个功能似乎内置在插件中,这使得很难做到这一点(不修改插件代码,不是我想做的事).
我在插件代码原型方法中找到了eventDelegate函数调用:
$(this.currentForm)
.validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
.validateDelegate(":radio, :checkbox, select, option", "click", delegate);
Run Code Online (Sandbox Code Playgroud)
当我从插件中删除这些行时,我得到了我的结果,但是我更愿意在插件之外做一些事情来实现这一点.
有人可以帮帮我吗?如果您需要更多详细信息,请告诉我们.我搜索谷歌几乎没有成功.
谢谢
编辑:我基本上尝试验证表单只有在触发提交事件时.默认情况下,每次输入控件中的焦点丢失时,插件都会进行验证.
找到了答案.它是(隐藏?)作为validate方法中选项的一部分.
请参阅此页面上的onfocusout等选项:http://docs.jquery.com/Plugins/Validation/validate#options
我可以设置为假.
这是我的代码设置我的验证器(希望其他人会发现这有用):
$(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);
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6713 次 |
| 最近记录: |