if(navigator.userAgent.indexOf("MSIE")>=0) { document.getElementById("cusRequestName").attachEvent('onpropertychange',function(o){ if(document.getElementById("cusRequestName").value==""){ document.getElementById("cusRequestNameC").checked = false; }else{ document.getElementById("cusRequestNameC").checked = true;; } }); }//IE if(navigator.userAgent.indexOf("Firefox")>=0){ document.getElementById("cusRequestName").addEventListener('input',function(o){ if(document.getElementById("cusRequestName").value==""){ document.getElementById("cusRequestNameC").checked = false; }else{ document.getElementById("cusRequestNameC").checked = true;; } },false); }//FIRFOX
根據瀏覽器的不同,使用的方法也不同。ie下的'onpropertychange'可以檢測到一個text的value變化,無論是手動輸入修改,還是因爲js腳本修改了value的值。
但是firefox就不同的,對於firefox只能用oninput來檢測到手動輸入改變的value值,對於js腳本改變的value,就無能爲力檢測不到了。
類似的,firefox有一個類似的方法DOMAttrModified,但是這個也只是限於attribute的變化,value值的改變同樣檢測不出來。一定要注意:是attribute的變化,如果下次還是用了setAttribute("x",1),那麼是不會alert的,因爲這次和上次attribute的值沒有變化。
<div id="div1">dfd</div>
<script>
document.getElementById("div1").addEventListener("DOMAttrModified",function(e){
alert("屬性發生改變");
},false);
document.getElementById("div1").setAttribute("x",1);
</script>