jQueryUI 日期选择器上的焦点事件

Posted

技术标签:

【中文标题】jQueryUI 日期选择器上的焦点事件【英文标题】:Focus event on jQueryUI datepicker 【发布时间】:2014-05-03 12:30:02 【问题描述】:

我想用附加的 Datepicker 处理输入元素上的焦点事件以保存原始值。

不幸的是,对弹出元素(如下个月按钮)的任何点击似乎也会在输入时生成焦点事件。它们看起来与输入中的真实焦点事件完全一样。

看到这个fiddle。

<input id="dt" type="text"></input>

$("#dt")
.datepicker()
.on('focus blur', function(e) 
    console.warn("!%s", e.type, this, arguments[0], event);
);

如何只处理真正的焦点事件而忽略其余事件?

【问题讨论】:

e.isTrigger ??? jsfiddle.net/Lb5L2/5 “真实”和“假”焦点事件有什么区别?你想做什么? @Zhihao 真实事件由浏览器(鼠标)生成,假事件由jquery合成 @A.Wolff 虽然 e.isTrigger 可以解决问题,但它不是公共 API。 @MarcinWisnicki 那么e.originalEvent??? 【参考方案1】:

如果我正确理解您想要做什么,您可以在事件处理程序中保留一些状态。当您获得焦点事件时,将 datePickerOpened 标志设置为 true,并且仅在收到事件时该标志为 false 时执行您的操作。然后,当你得到 blur 事件时,将 datePickerOpened 设置为 false。

【讨论】:

不幸的是,还有虚假的模糊事件。

以上是关于jQueryUI 日期选择器上的焦点事件的主要内容,如果未能解决你的问题,请参考以下文章

禁用 jQuery UI 日期选择器的焦点设置

日期选择器上的自定义输入字段

如何在斑马日期选择器上调用我的 onchange 事件?

保存字段日期选择器上的 JqGrid 错误

为啥 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢?

引导日期选择器上的棘手问题