js中的onchange事件


剛開始接觸 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM