javascript
html复选框值改变后事件,javascript – 从onclick/onchange事件获取HTML值的复选框
簡短的回答:
使用點(diǎn)擊事件,它不會觸發(fā),直到更新的值,并觸發(fā)時(shí),你希望它:
Checkbox
function handleClick(cb) {
display("Clicked, new value = " + cb.checked);
}
更長的答案:
更改事件處理程序不會被調(diào)用,直到檢查狀態(tài)已更新(live example | source),但是因?yàn)?作為TimBüthe在評論中指出)IE不會觸發(fā)更改事件,直到復(fù)選框失去焦點(diǎn), t主動獲得通知。更糟糕的是,如果你點(diǎn)擊復(fù)選框的標(biāo)簽(而不是復(fù)選框本身)來更新它,你可以得到你得到的舊值的印象(在IE這里嘗試它通過點(diǎn)擊標(biāo)簽:live example | source )。這是因?yàn)槿绻麖?fù)選框具有焦點(diǎn),單擊標(biāo)簽會使焦點(diǎn)遠(yuǎn)離焦點(diǎn),使用舊值觸發(fā)更改事件,然后點(diǎn)擊發(fā)生設(shè)置新值并將焦點(diǎn)置于復(fù)選框。非?;靵y。
但你可以避免所有的不愉快,如果你使用click。
我使用DOM0處理程序(onxyz屬性),因?yàn)檫@是你問的,但為了記錄,我通常建議掛鉤處理程序代碼(DOM2的addEventListener或attachEvent在舊版本的IE),而不是使用onxyz屬性。這允許您將多個(gè)處理程序附加到同一個(gè)元素,并讓您避免使所有處理程序的全局函數(shù)。
此答案的早期版本使用此代碼為handleClick:
function handleClick(cb) {
setTimeout(function() {
display("Clicked, new value = " + cb.checked);
}, 0);
}
目標(biāo)似乎是允許點(diǎn)擊完成,然后再查看值。據(jù)我所知,沒有理由這樣做,我不知道為什么我這樣做。該值在調(diào)用點(diǎn)擊處理程序之前已更改。實(shí)際上,規(guī)范是quite clear about that.沒有setTimeout的版本在我嘗試的每個(gè)瀏覽器(甚至IE6)中工作得很好。我只能假設(shè)我正在考慮一些其他平臺,直到事件發(fā)生后才進(jìn)行更改。在任何情況下,沒有理由這樣做與HTML復(fù)選框。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的html复选框值改变后事件,javascript – 从onclick/onchange事件获取HTML值的复选框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python进阶(二十)Python爬虫
- 下一篇: 第一章、天天生鲜项目框架搭建