剛開始接觸 onchange 事件就開始幻想能做很多炫酷的事情,但是初學JS時知識不夠全面,力不從心。對於onchange事件還不夠了解。
onchange事件被描述為 作用域的內容被改變時觸發;
看了一些資料 原來 onchange 在屬性值改變時還必須使得當前元素失去焦點(onblur)才可以激活該事件;
如果需要及時監聽輸入框值的變化, 可以使用 onpropertychange 事件 但此方法 僅限於IE;
非IE 下可以用 oninput 事件來監聽,但需要通過添加 addEvevtListener()進行注冊;
舉例如下:
<script type="text/javascript">
var element = document.getElementById("mytext"); //獲取元素對象
if("\v"=="v") { //判斷是否IE瀏覽器
//if(/msie/i.test(navigator.userAgent)) //ie瀏覽器
element.onpropertychange = myfun; //IE的話添加onpropertychange 事件
}
else{
element.addEventListener("input",myfun,false); //非IE的話用 addEventListener 添加監聽事件
}
function myfun(){
alert(document.getElementById('mytext').value);
}
</script>
上面是JS函數的寫法~直接在頁面的話就是:
<input type="text" name="mytext" oninput=" myfun();" onpropertychange=" myfun();" />
補充回答:
再補充下關於幾個事件的區別:
1、onchange事件與onpropertychange事件的區別:
onchange事件在內容改變(兩次內容有可能還是相等的)且失去焦點時觸發;onpropertychange事件卻是實時觸發,即每增加或刪除一個字符就會觸發,通過js改變也會觸發該事件,但是該事件IE專有。
2、oninput事件與onpropertychange事件的區別:
oninput事件是IE之外的大多數瀏覽器支持的事件,在value改變時觸發,實時的,即每增加或刪除一個字符就會觸發,然而通過js改變value時,卻不會觸發;onpropertychange事件是任何屬性改變都會觸發的,而oninput卻只在value改變時觸發,oninput要通過addEventListener()來注冊,onpropertychange注冊方式跟一般事件一樣。(此處都是指在js中動態綁定事件,以實現內容與行為分離)
3、oninput與onpropertychange失效的情況:
(1)oninput事件:a). 當腳本中改變value時,不會觸發;b). 從瀏覽器的自動下拉提示中選取時,不會觸發。
(2)onpropertychange事件:當input設置為disable=true后,onpropertychange不會觸發。
參考了大神的內容 http://www.cnblogs.com/ChenRunCheng/p/3649896.html