html复选框值改变后事件,javascript – 从onclick/onchange事件获取HTML值的复选框

这篇博客探讨了HTML复选框中点击事件和更改事件的区别。当使用更改事件时,它可能在复选框失去焦点后才触发,尤其是在IE浏览器中。而点击事件则能立即获取新的值。因此,推荐使用点击事件来确保及时获取更新的状态。文章还提到了标签点击导致的焦点转移问题,可能导致事件处理的混乱。解决方案是直接使用click事件处理程序,以避免这些复杂性。
摘要由CSDN通过智能技术生成

简短的回答:

使用点击事件,它不会触发,直到更新的值,并触发时,你希望它:

Checkbox

function handleClick(cb) {

display("Clicked, new value = " + cb.checked);

}

更长的答案:

更改事件处理程序不会被调用,直到检查状态已更新(live example | source),但是因为(作为TimBüthe在评论中指出)IE不会触发更改事件,直到复选框失去焦点, t主动获得通知。更糟糕的是,如果你点击复选框的标签(而不是复选框本身)来更新它,你可以得到你得到的旧值的印象(在IE这里尝试它通过点击标签:live example | source )。这是因为如果复选框具有焦点,单击标签会使焦点远离焦点,使用旧值触发更改事件,然后点击发生设置新值并将焦点置于复选框。非常混乱。

但你可以避免所有的不愉快,如果你使用click。

我使用DOM0处理程序(onxyz属性),因为这是你问的,但为了记录,我通常建议挂钩处理程序代码(DOM2的addEventListener或attachEvent在旧版本的IE),而不是使用onxyz属性。这允许您将多个处理程序附加到同一个元素,并让您避免使所有处理程序的全局函数。

此答案的早期版本使用此代码为handleClick:

function handleClick(cb) {

setTimeout(function() {

display("Clicked, new value = " + cb.checked);

}, 0);

}

目标似乎是允许点击完成,然后再查看值。据我所知,没有理由这样做,我不知道为什么我这样做。该值在调用点击处理程序之前已更改。实际上,规范是quite clear about that.没有setTimeout的版本在我尝试的每个浏览器(甚至IE6)中工作得很好。我只能假设我正在考虑一些其他平台,直到事件发生后才进行更改。在任何情况下,没有理由这样做与HTML复选框。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值