我正在使用jQuery Validate插件来验证我的表单。我的表格中有一对出发地和目的地城市,以及一对开始和结束日期。我希望onfocusout
函数仅在机场字段中都具有相同代码的情况下才起作用。
我的下面的代码...
$(function () {
var validator = $("#testForm").validate({
errorClass: "errorMsg",
errorElement: "span",
rules: {
fromAirport: {
"required": true,
"onfocusout": true
},
toAirport: {
"required": true,
"onfocusout": true
},
fromDate: {
"required": true,
"onfocusout": false
}
toDate: {
"required": true,
"onfocusout": false
}
},
messages: {
fromAirport: {
"required": "fromAirportis required!"
},
toAirport: {
"required": "toAirportis required!"
}
fromDate: {
"required": "fromDateis required!"
},
toDate: {
"required": "toDate is required!"
},
},
onfocusout: function(el) {
if (!this.checkable(el)){
this.element(el);
}
},
submitHandler: function (form) {
}
});
});
jsFiddle:https://jsfiddle.net/4yegctz5/1/
最佳答案
关于此代码...
onfocusout: function(el) {
if (!this.checkable(el)){
this.element(el);
}
},
什么是
checkable
?有no such thing represented in this plugin。关于此代码...
rules: {
fromAirport: {
"required": true,
"onfocusout": true // <- No such rule
}, ...
"onfocusout"
不是规则。它只是由表单中的“事件”触发的回调函数。此外,尽管可以创建任何自定义规则,但是不能创建影响验证事件的自定义规则。OP的标题:“使用jQuery Validate专注于某些特定领域”
您唯一的解决方案是按如下方法覆盖
onfocusout
函数。我只是将任意class
放在要在onfocusout
事件上求值的任何字段上。然后,自定义onfocusout
函数使用条件检查此类的元素,然后触发验证。onfocusout: function(element) {
if ($(element).hasClass('ofo')) {
this.element(element);
}
},
演示:https://jsfiddle.net/4yegctz5/3/