我对绑定到其blur事件的文本输入进行了一些验证。我在这个字段上有一个日期选择器(来自jqueryUI的版本),所以当您单击该字段时,日期选择器会出现,然后您单击一个日期,它就会像日期选择器一样将日期填充到字段中。然而,就在输入日期之前,似乎由于某种原因,输入字段变得模糊了。在填充日期之前,焦点似乎从输入上移开了。因此,我的验证在用户选择日期时触发,在日期实际进入字段之前,当它不应该进入字段时。它应该在日期输入之后运行。有谁知道为什么在这一点上会发生模糊,或者如何解决它?
发布于 2009-11-29 08:59:13
当用户在输入字段外单击(选择日期)时,输入字段将变得模糊。这是没有办法的。因此,不要在模糊上触发验证,而是使用日期选择器的onSelect回调。
$('.selector').datepicker({
onSelect: function(dateText) { /* validation here */ }
});
如果你想保留onblur事件,你可以推迟验证,让datepicker在验证触发之前填写字段,如下所示:
$('#myform input').blur(function () {
setTimeout(function () { /* validation here */ }, 1);
});
使用setTimeout来处理并发问题可能看起来像是一个技巧,但由于JavaScripts单线程的特性,它工作得相当好。jQuery-fame的John Resig在this blogpost中谈到了这一点。
发布于 2013-11-05 18:07:06
您可以尝试这样做:
$(".date-pick").datepicker({
...
onSelect: function() {
this.focus();
},
onClose: function() {
this.blur();
}
...
发布于 2011-05-04 07:35:36
我发现让键盘和选择器选择事件一致工作的唯一方法是使用以下代码:
$(".date-picker")
.datepicker("option", "onSelect", function (dateText, inst) {
// User Method
})
.change(function () {
// User Method
});
仅使用blur事件的问题是(在选择时) datepicker在将值传递给它之前在输入上触发blur事件。
https://stackoverflow.com/questions/1814292
复制相似问题