DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML和Xhtml >> 淺析html input 等值改變添加監聽事件
淺析html input 等值改變添加監聽事件
編輯:HTML和Xhtml     

要達到的效果
很多情況下我們都會即時監聽輸入框值的變化,以便作出即時動作去引導浏覽者增強網站的用戶體驗感。比如即時顯示輸入框已經被輸入的字節數,或者即時讀取輸入的值來進行搜索引導,也就是google的關聯搜索效果等。
只要我們能捕獲即時事件就能做到很多事情。
需要了解的知識
首先,我們需要了解onchangeonpropertychange的不同:

IE下,當一個HTML元素的屬性改變的時候,都能通過 onpropertychange來即時捕獲。
onchange在屬性值改變時還必須使得當前元素失去焦點(onblur)才可以激活該事件。

了解這一點後我們發現onpropertychange的效果就是我們想要的,可是很遺憾,它只在IE下有效果。我們能不能找到另外一個時間來代替onpropertychange呢?

經過翻閱資料得知,在其他浏覽器下可以使用oninput事件來達到同樣的效果,真是太好了,我們只需要把IE浏覽器區分出來就可以。

oninput的使用

下面我們先了解一下oninput如何使用。
 如果您是將注冊時間直接寫在頁面裡面,那麼如下寫法就可以實現:
<、input type="text" name="textfield" oninput="alert(this.value);" onpropertychange="alert(this.value)" />

但是,將oninput寫在JS代碼中分離出來時與普通事件注冊的方法有些不同,必須使用addEventListener來注冊。

attachEvent和addEventListener 的不同

說到這裡我們再來了解一下 attachEvent和addEventListener 的使用方法:

attachEvent方法,為某一事件附加其它的處理事件。(不支持Mozilla系列)
addEventListener方法 用於 Mozilla系列

舉例:

XML/HTML Code復制內容到剪貼板
  1. document.getElementByIdx_x_x("btn").onclick = method1;   
  2.   
  3. document.getElementByIdx_x_x("btn").onclick = method2;   
  4.   
  5. document.getElementByIdx_x_x("btn").onclick = method3;   

如果這樣寫,那麼將會只有medhot3被執行

寫成這樣:

XML/HTML Code復制內容到剪貼板
  1. var btn1Obj = document.getElementByIdx_x_x("btn1");   
  2.   
  3. btn1Obj.attachEvent("onclick",method1);   
  4.   
  5. btn1Obj.attachEvent("onclick",method2);   
  6.   
  7. btn1Obj.attachEvent("onclick",method3);    

執行順序為method3->method2->method1

如果是Mozilla系列,並不支持該方法,需要用到addEventListener

XML/HTML Code復制內容到剪貼板
  1. var btn1Obj = document.getElementByIdx_x_x("btn1");   
  2.   
  3. btn1Obj.addEventListener("click",method1,false);   
  4.   
  5. btn1Obj.addEventListener("click",method2,false);   
  6.   
  7. btn1Obj.addEventListener("click",method3,false);   
  8.   
  9. 執行順序為method1->method2->method3    

了解了如何使用addEventListener來注冊oninput事件後我們再回到要解決的問題[劃分浏覽器]。

判斷IE浏覽器

如何將IE區分出來呢?
這似乎是一個老生常談的問題,網絡中有很多找那個方法,歸類為兩類:
其一,是判斷浏覽器的功能屬性。
其二,就是判斷傳統的 user-agent 字符串,這可能是最古老也是最流行的檢測方式。
在這裡就不做深入了解了,我們這裡用一種比較簡單的方法來判斷

XML/HTML Code復制內容到剪貼板
  1. if("\v"=="v") {   
  2.   
  3.   alert("IE");   
  4.   
  5. }else{   
  6.   
  7.   alert("NO");   
  8.   
  9. }   
  10.   

到目前為止我們遇到的問題就已經解決了,開始寫代碼來測試我們的思路是否能夠實現。

以上這篇淺析html input 等值改變添加監聽事件就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

原文地址:http://www.web600.net/html/editor/JavaScript/201001131529.html

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved