JavaScript 手动调度 mousedown 不会使文本框散焦

标签 javascript focus dom-events dispatchevent

演示:http://jsfiddle.net/8yDr5/

我正在拦截 mousedowndiv上并返回false取消事件(并最终启动拖放操作),因为(出于某种原因)mousemove如果初始 mousedown 则事件不会触发没有被取消。

但是,我仍然想要那个mousedown为了有效地发生,所以我尝试使用所有相同的参数手动创建第二个事件,然后分派(dispatch)它(这次将其标记为欺骗,这样我就可以拦截此事件并且取消欺骗事件)。

然而,问题是欺骗事件并没有从事件文本框中删除焦点,而这正是我需要它做的。

我创建了一个 jsfiddle 来演示该问题:http://jsfiddle.net/8yDr5/

首先聚焦文本框并单击红色框。理想情况下,它应该使文本框散焦,但它没有发生。我是否做错了什么,或者我可以欺骗其他一些事件以使该文本框变得模糊?

我在 Mac 版 Chrome、Safari 和 Firefox 14 中对此进行了测试,它们都出现了该问题。

最佳答案

好吧,如果你无法重现原来的问题,至少我会帮助你解决散焦问题:

只需添加

document.getElementById('textbox').blur();

(或者如果要点击多次,您可以将 document.getElementById('textbox') 存储在变量中)

DEMO: http://jsfiddle.net/8yDr5/2/

关于JavaScript 手动调度 mousedown 不会使文本框散焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290671/

相关文章:

javascript - 有没有一种方法可以使用 Javascript 跟踪从哪个 window.name 打开了一个新窗口(在新选项卡中打开)?

javascript - 访问 JS DOM 内部的函数参数

javascript - 为什么 React 要求在静态 propTypes 中重复使用 props?

C#调用Listview的SelectedIndexChange事件中的文本框焦点失去对事件完成的关注

javascript - Adobe Air Client 和 Javascript,选项列表不滚动

java - 使用 GridBagLayout 为 JFrame 自定义 FocusTraversalPolicy

CSS 不同的链接样式

javascript - 在 iframe 上时检测鼠标移动吗?

javascript - ExpressJS - 用于匹配路径的正则表达式不起作用

javascript - 如何在 jquery ajax 模板中添加两个不同绑定(bind)变量的值,如 ${amount} 和 ${tax}?