- 我有一个
<input type=text>
withfocusout
事件处理程序 - 我有一个
<button>
点击事件处理程序
Focusout检查输入框中的格式是否正确。它通过针对正则表达式测试输入值来做到这一点。如果失败,它会显示一条消息(div
一段时间后淡入和淡出)并通过调用重新调整我的输入
window.setTimout(function() { $(this).focus(); }, 10);
因为我无法重新关注focusout
事件处理程序。focusout
活动也不能取消。仅供参考。
Click从输入元素收集数据并使用 Ajax 发送数据。
问题
当用户TABs通过表单时,一切都很好。当某个输入框格式化检查失败时,它会在用户按下后立即重新聚焦TAB。
但是,当用户不使用TAB而是单击每个单独的输入字段时,一切正常,直到他们单击button
. focusout
触发并设置重新聚焦超时。由于超时是如此之短,所以随后会发生焦点事件,然后click
触发事件并发出 Ajax 请求。
问题
我已经将我的格式检查实现为一个独立的 jQuery 插件,我想保持这种方式。它用于.live()
附加focusout
所有具有特定属性的输入字段,其中定义了格式正则表达式。
数据提交也是通用的,我不想让它依赖于格式化插件。他们都应该保持独立。
如何在不使这两个插件依赖的情况下防止单击事件执行?
我正在摆弄的示例代码
经过一番搜索,我发现所有主要的浏览器都支持document.activeElement
,但我无法让它在 Chrome 中运行。FF 和 IE 都报告this
是活动元素,但 Chrome 总是说它BODY
是活动的,即使在元素click
上触发也是如此。button
检查此代码http://jsfiddle.net/Anp4b/1/并单击按钮。使用 Chrome 和其他浏览器进行测试,看看有什么不同。