首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jqueryUI日期选择器在传递日期之前触发输入的模糊,避免/解决方法?

jqueryUI日期选择器在传递日期之前触发输入的模糊,避免/解决方法?
EN

Stack Overflow用户
提问于 2009-11-29 08:48:26
回答 7查看 39.1K关注 0票数 23

我对绑定到其blur事件的文本输入进行了一些验证。我在这个字段上有一个日期选择器(来自jqueryUI的版本),所以当您单击该字段时,日期选择器会出现,然后您单击一个日期,它就会像日期选择器一样将日期填充到字段中。然而,就在输入日期之前,似乎由于某种原因,输入字段变得模糊了。在填充日期之前,焦点似乎从输入上移开了。因此,我的验证在用户选择日期时触发,在日期实际进入字段之前,当它不应该进入字段时。它应该在日期输入之后运行。有谁知道为什么在这一点上会发生模糊,或者如何解决它?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-11-29 08:59:13

当用户在输入字段外单击(选择日期)时,输入字段将变得模糊。这是没有办法的。因此,不要在模糊上触发验证,而是使用日期选择器的onSelect回调。

代码语言:javascript
复制
$('.selector').datepicker({
    onSelect: function(dateText) { /* validation here */ }
});

如果你想保留onblur事件,你可以推迟验证,让datepicker在验证触发之前填写字段,如下所示:

代码语言:javascript
复制
$('#myform input').blur(function () {
    setTimeout(function () { /* validation here */ }, 1);
});

使用setTimeout来处理并发问题可能看起来像是一个技巧,但由于JavaScripts单线程的特性,它工作得相当好。jQuery-fame的John Resig在this blogpost中谈到了这一点。

票数 18
EN

Stack Overflow用户

发布于 2013-11-05 18:07:06

您可以尝试这样做:

代码语言:javascript
复制
$(".date-pick").datepicker({
...
onSelect: function() {
this.focus();
},
onClose: function() {
this.blur();
}
...
票数 8
EN

Stack Overflow用户

发布于 2011-05-04 07:35:36

我发现让键盘和选择器选择事件一致工作的唯一方法是使用以下代码:

代码语言:javascript
复制
 $(".date-picker")
            .datepicker("option", "onSelect", function (dateText, inst) {
                // User Method
            })
            .change(function () {
                // User Method
            });

仅使用blur事件的问题是(在选择时) datepicker在将值传递给它之前在输入上触发blur事件。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1814292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档