jQuery Validation插件DOB字段自定义验证

时间:2013-01-14 13:33:21

标签: jquery jquery-validate

假设我有一个我要验证的出生日期字段。

日/月/年

现在我想在同一时间验证这3个字段。 我的意思是如果用户仍然关注这三个领域中的任何一个,请不要进行验​​证。当他离开所有人时,验证日期。

看起来很简单,我可以这样做:

 $('#dayInput').is(':focus')

对于所有三个字段,然后检查其中一个是否为真...... 但这以一种非常有趣的方式失败了。在我看来,jQuery验证插件验证了“inFocus”和“out of focus”事件之间的元素。

所以,如果我在年份输入然后移动到月份输入,在这两个事件之间,三个输入中的任何一个都没有“聚焦”,我无法判断用户是否离开3个dob输入是还在其中一个。

有办法解决这个问题吗?

P.S。我无法在我要添加的额外方法中注册事件处理程序btw,因为它们将被注册太晚。假设我在当天输入,留下它=>验证启动,处理程序(焦点和模糊得到注册),但为时已晚,上一个事件被跳过。

我希望我在这里有所作为。

2 个答案:

答案 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
  }
}

http://jsfiddle.net/LRAgX/

答案 1 :(得分:0)

也许您可以使用“和”运算符“&&”,如

if ($('#dayinput').change() && $('#monthinput').change() && $('#yearinput').change()) {
$('#myform').validate(); 
}