加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

javascript – 在onchange事件之前触发onb??lur事件

发布时间:2020-12-14 23:08:00 所属栏目:资源 来源:网络整理
导读:我有一个包含多个文本输入字段的大表单.基本上,我需要处理所有字段的onchange事件和某些字段的onblur事件.当对字段进行更改并且字段失去焦点时,两个事件都会触发(这是正确的行为).唯一的问题是我想处理onblur ?在我处理onchange事件之前的事件. 在ie和Firefo

我有一个包含多个文本输入字段的大表单.基本上,我需要处理所有字段的onchange事件和某些字段的onblur事件.当对字段进行更改并且字段失去焦点时,两个事件都会触发(这是正确的行为).唯一的问题是我想处理onblur
?在我处理onchange事件之前的事件.

在ie和Firefox中进行一些测试之后,似乎默认行为是在onblur之前触发onchange事件.我一直在使用以下代码作为测试…

这让我想到了我的问题:

>似乎这种行为在浏览器中是一致的.为什么onchange首先开火?
>由于我无法处理每个输入元素的onblur事件,有没有办法在处理onchange事件之前触发onb??lur?

最佳答案
> onchange首先触发的原因是,一旦元素失去焦点(即“模糊”),通常就会完成更改(我说通常是因为脚本仍然可以在没有用户交互的情况下更改元素).
>对于那些首先需要onblur处理的元素,您可以禁用onchange处理程序并从onblur处理程序触发onchange(甚至是自定义事件).这将确保正确的订单,即使它是更多的工作.要检测更改,可以为该字段使用状态变量.

但是,作为一般性评论,对这种同步性的需求表明,即使有时无法避免,您用于解决您正在解决的任何问题的方法可能还需要更多的工作.如果您确定这是唯一的方法,请尝试以下方法之一!

编辑:只是要详细说明最后一点,你必须遵循一些关于你的事件模型的假设.你是假设每个变化事件后面都是模糊的,否则就是未经处理,或者你想要处理每个变化,但是那些随后是一个模糊进一步处理后的onblur对它们做了什么?在任何情况下,如果您想强制执行订单,处理程序将需要访问公共资源(全局变量,属性等).您可能想要使用其他事件类型吗? (输入?).最后,此链接包含Mozilla浏览器更改事件的一些详细信息:
https://developer.mozilla.org/en-US/docs/Web/Reference/Events/change.
第三个“子弹”解决了事件顺序问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读