假设我有一个我要验证的出生日期字段。
日/月/年
现在我想在同一时间验证这3个字段。 我的意思是如果用户仍然关注这三个领域中的任何一个,请不要进行验证。当他离开所有人时,验证日期。
看起来很简单,我可以这样做:
$('#dayInput').is(':focus')
对于所有三个字段,然后检查其中一个是否为真...... 但这以一种非常有趣的方式失败了。在我看来,jQuery验证插件验证了“inFocus”和“out of focus”事件之间的元素。
所以,如果我在年份输入然后移动到月份输入,在这两个事件之间,三个输入中的任何一个都没有“聚焦”,我无法判断用户是否离开3个dob输入是还在其中一个。
有办法解决这个问题吗?
P.S。我无法在我要添加的额外方法中注册事件处理程序btw,因为它们将被注册太晚。假设我在当天输入,留下它=>验证启动,处理程序(焦点和模糊得到注册),但为时已晚,上一个事件被跳过。
我希望我在这里有所作为。
答案 0 :(得分:1)
如果您不希望在某个字段失去焦点时触发验证,那么究竟何时? (当他们集体失去焦点时,您无法指定一组字段来触发验证。)仅当您单击submit
按钮时?如果是这样,请尝试以下选项......
$(document).ready(function() {
$('#myform').validate({
onfocusout: false,
onkeyup: false,
// your other options
});
});
表单仅在您点击submit
时验证。
工作演示:
<强> http://jsfiddle.net/CQnRn/ 强>
文档:
http://docs.jquery.com/Plugins/Validation/validate#toptions
合理的替代方案是验证日期的单个字段而不是三个。
<input type="text" name="birthdate" />
规则选项:
rules: {
birthdate: {
required: true,
date: true
}
}
答案 1 :(得分:0)
也许您可以使用“和”运算符“&&
”,如
if ($('#dayinput').change() && $('#monthinput').change() && $('#yearinput').change()) {
$('#myform').validate();
}