如何在模糊时隐藏小部件,除非单击小部件
How to hide widget on blur except when widget is clicked?
我正在构建一个类似于日期选择器的小部件,但是当(a)用户从输入框跳出选项卡或(b)单击小部件和输入之外时,我不知道如何使其消失。
将模糊事件绑定到输入框很容易,但问题是当您单击小部件时它会被触发,并且似乎没有可靠的方法来确定焦点从模糊事件内部更改为哪个元素。
当用户在输入之外单击时关闭小部件也有点粗略,但它是可行的:
$('body').on('click', function(e) {
if(e.target != self.element[0] && e.target != self.clock[0] && !$.contains(self.clock[0], e.target)) {
self.clock.hide();
}
});
但是,如果我能弄清楚如何正确处理模糊事件(也可能由元素外部的 Tab 触发),我就不需要它了。
事实证明,解决方案实际上非常简单。多亏了罗霍卡的建议,我想出了这个:
this.timepicker.on('mousedown', function(e) {
return false;
});
this.element.on('blur', function(e) {
self._parseInput();
self._refreshInput();
self._close();
});
mousedown
事件首先触发,通过返回 false,它可以防止在单击小部件时触发模糊事件。其他所有内容(单击小部件和输入框外部,或按 Tab 键离开)会导致模糊,从而根据需要关闭小部件。
此外,它有一个意想不到的令人愉快的副作用,即在与小部件交互时将光标保持在文本框内。
相关文章:
- 一个html/javascript'小工具'知道用户何时单击了小部件外的任意位置
- Jdewit Timepicker 在文本和图标单击上显示小部件
- 单选按钮单击可刷新/更改网站的小区域
- 如果输入的值小于最小投标金额,如何禁用按钮单击
- 单击时会变大的小瓷砖
- 小部件上的菜单,在选择其他项目时单击关闭时打开
- 我不希望弹出窗口在用户单击离开它时最小化
- 如何在模糊时隐藏小部件,除非单击小部件
- 单击小图像并叠加大图像
- 当我单击页面时,所有文本框都必须最小化
- 如何让我的箭头小部件在第二次单击时向后旋转以开始
- 创建小计,在连续单击单选按钮时将点相加,而不是一次全部单击
- 当在IE中单击小部件内的滚动条时,Gridster小部件会粘在鼠标上
- '滑块角度'单击小图像会返回相应的大图像
- 如何在单击列表中的一个li时加载外部小部件
- 如何重置最大和最小范围的范围滑块上的按钮单击
- 自定义dojo小部件在单击按钮时不会清除文本字段
- 最小化单击()
- 灰色复选框,但仍然可以通过其他小部件单击
- 从单元格中删除输入元素,并在单元格或其他单元格外部单击时保留值