假设我将一个blur函数附加到HTML输入框,如下所示:
<input id="myInput" onblur="function() { ... }"></input>
Run Code Online (Sandbox Code Playgroud)
有没有办法blur在函数内部获取导致事件触发的元素的ID (被点击的元素)?怎么样?
例如,假设我有这样的跨度:
<span id="mySpan">Hello World</span>
Run Code Online (Sandbox Code Playgroud)
如果我在输入元素具有焦点后立即单击跨度,则输入元素将失去焦点.该功能如何知道它mySpan被点击了?
PS:如果跨度的onclick事件发生在输入元素的onblur事件之前,我的问题就会解决,因为我可以设置一些状态值,表明已经点击了一个特定的元素.
PPS:这个问题的背景是我想在外部触发一个AJAX自动完成控件(来自可点击元素)来显示其建议,而不会因为blur输入元素上的事件而立即消失.所以我想检查blur函数是否单击了一个特定元素,如果是,则忽略blur事件.
拥有以下szenario:模糊textBox(输入)将文本写入我的状态框(在某些条件下),然后单击按钮也会将文本写入状态框.
现在当点击按钮时,如果它被聚焦,它将模糊我的textBox,这将导致status-Box闪烁,因为blurHandler首先会写入其结果,然后是clickHandler.因为我希望clickHandler的结果出现,我的想法是让blurHandler在队列末尾放置一个事件,检查clickHandler之前是否写过结果.
在Swing中我会尝试SwingUtilities .invokeLater(Runnable).GWT中的等价物被称为 调度程序,但那些延迟或最终命令似乎总是在当前事件之后和下一个事件之前运行.到目前为止,我使用Scheduler.scheduleFixedDelay延迟100ms,并希望它在每个浏览器中的clickHanlder之后.看到答案的类似问题.
我认为必须有一个更好的解决方案.如何真正将事件添加到队列的末尾,或者由于HTML的限制而无法实现?