我试图学习如何构建日期选择器,例如http://jqueryui.com/demos/datepicker/

基本上,我在文本框的onblur事件上使“ date popup”显示= none,但是这当然不起作用(因为如果用户单击弹出框本身,它将触发文本框的blur事件并隐藏弹出框,这不是我想要的)

我想知道我们如何做到这一点,以便当用户单击弹出框以外的任何位置时,弹出框将关闭。

最佳答案

jQuery UI datepicker是一个非常高级的小部件。 jQuery UI的开发人员有一个称为_checkExternalClick的事件处理程序,该事件处理程序应用于mousedown事件。此事件处理程序检查几件事(打开日期选择器,单击的元素的ID ==到日期选择器的ID,日期选择器是否具有markerclass(添加到元素className以指示日期选择器附件),日期选择器具有触发器类(例如,图标触发器)等。如果一切顺利,将调用_hideDatepicker函数。

这是jQuery UI datepicker所做的简化示例:http://jsfiddle.net/GSzYF/。您可能不需要检查jQuery UI datepicker检查的所有内容,因为您编写的小部件很可能不需要像分布式框架那样可自定义。

09-25 21:32