最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js change,propertychange,input事件小議

 更新時間:2011年12月20日 01:27:20   作者:  
github上關(guān)于mootools一個issue的討論很有意思,所以就想測試記錄下。感興趣的可以點擊原頁面看看
https://github.com/mootools/mootools-core/issues/2170

這個問題來自IE(LTE8)中對checkbox和radio change事件的實現(xiàn)問題,在IE(LTE8)中測試下來,當(dāng)你點擊一個checkbox或者radio,它的change事件是不會立即觸發(fā),除非你讓它失去焦點,而在其他標準瀏覽器中(包括IE9),是點擊后立即觸發(fā)change事件的,這的確是個蛋疼的問題,說到解決方法,倒也比較容易,用IE(LTE8)中元素特有的propertychange事件來處理(IE9已經(jīng)沒這玩意兒了),就能避免上述問題,如:

復(fù)制代碼 代碼如下:

checkEl.attachEvent('onpropertychange', function() {
console.log('hey man, I am changed');
});

但是這樣就認為解決了,是不充分的,因為像checkEl.setAttribute('data-value', 'god')這樣的操作也會觸發(fā)其propertychange事件,所以我們需要用其event.propertyName來判斷下,如:

復(fù)制代碼 代碼如下:

checkEl.attachEvent('onpropertychange', function() {
if(window.event.propertyName == 'checked')
console.log('blah blah blah...');
});

這樣算是可以了。由此展開我又測試了下select,其change事件的表現(xiàn)在不同瀏覽器中一致,沒有出現(xiàn)非要先失去焦點的情況。我又測試了下input[type="text"],它的change事件是我們所熟悉的,要失去焦點才會觸發(fā),那么當(dāng)我們想讓它一輸入東西就立即觸發(fā)呢,參考之前的例子在IE(LTE8)中,我們可以用propertychange來實現(xiàn),只不過propertyName的條件變成‘value'而已。在其他標準瀏覽器中(包括IE9),我們可以用HTML5中的一個標準事件input, 如:

復(fù)制代碼 代碼如下:

inputEl.addEventListener('input', function(event) {
console.log('input event fired');
}, false);

這樣我們的每一次輸入都會觸發(fā)此事件,有人會說為什么不用keyup來監(jiān)聽一下, 這里有篇文章(原文鏈接)對此問題進行了闡述,感興趣的也可以讀讀。

相關(guān)文章

最新評論

芒康县| 晋城| 温州市| 牡丹江市| 尖扎县| 天等县| 阳江市| 镇宁| 运城市| 赣榆县| 梅河口市| 兖州市| 郓城县| 凭祥市| 北宁市| 南开区| 蒙自县| 赣州市| 北川| 普陀区| 咸阳市| 亳州市| 德令哈市| 木里| 乐陵市| 黎城县| 上饶县| 曲水县| 观塘区| 遂宁市| 华亭县| 定州市| 嘉祥县| 镇康县| 巴彦淖尔市| 稻城县| 新昌县| 什邡市| 出国| 大余县| 沙洋县|