-3

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

日月年

现在我想同时验证这 3 个字段。我的意思是,如果用户仍然专注于这三个领域中的任何一个,那么暂时不要验证。当他离开所有这些时,验证日期。

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

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

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

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

有没有办法解决这个问题?

PS 我不能在我要添加的额外方法中注册事件处理程序,因为它们注册得太晚了。假设我在当天输入,让它 => 验证启动,处理程序(焦点和模糊被注册),但为时已晚,前一个事件被跳过。

我希望我在这里有点道理。

4

2 回答 2

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/

于 2013-01-14T15:50:21.020 回答
0

也许你可以使用“与”运算符“ &&”之类的

if ($('#dayinput').change() && $('#monthinput').change() && $('#yearinput').change()) {
$('#myform').validate(); 
}
于 2013-01-14T13:41:40.760 回答