【发布时间】:2015-10-05 15:17:01
【问题描述】:
我有一个包含错误消息的表单,如下例所示:
http://codepen.io/anon/pen/dYWyEM?editors=101
重现问题的步骤如下:
打开codepen链接后,
1) 关注输入字段
2) 按提交按钮
3) 由于先触发了 blur 事件,所以先隐藏了错误信息,从而改变了提交按钮的位置。因此点击事件根本没有注册,我需要再次点击提交表单。
有没有办法先发送提交事件?
不知何故,我需要检测触发模糊事件的目标。
似乎relatedTarget 使我们能够找出触发模糊事件的元素。但是,这在 Firefox 中不起作用。
有没有办法找出所有浏览器中的relatedTarget?
【问题讨论】:
-
您可以简单地将错误消息的隐藏延迟大约 10 毫秒?
-
您可以使用
visibility: hidden来代替display: none?不能真正回答您的问题,但它可以提供一种可能的解决方法。 -
绑定一个关键事件/输入处理程序以在有效时删除消息
-
只需使用这个:
setTimeout(function(){ errorMsg.addClass('hidden'); },200)- 这可以解决您的问题。 -
@charlietfl 这对用户来说不是直观吗?你认为 200 毫秒的延迟会让他们认为他们填写的表格有误吗?人们甚至不会注意到跟踪您点击的每个链接会有 500 毫秒的延迟,更不用说在错误自行消失之前有 200 毫秒的延迟。
标签: javascript jquery forms javascript-events