[JS]讓文字方塊在撰寫內容時去執行程式

  • 3253
  • 0

[JS]讓文字方塊在撰寫內容時去執行程式

今天在寫JS程式的時候,
碰到一個情形,

就是當使用者在文字方塊輸入文字時,
能夠即時去執行JS的副程式,
 
因此,我很直覺的在文字方塊後面加上了 onchange 的語法,
但是這個語法支援性並不佳,(說穿了是根本不支援)
IE 跟 FF 都不會執行,
後來找了一下,
發現要用 onpropertychange 才能在 IE 上面跑。
但是問題又來了…
onpropertychange在  FF 中並不支援,
但是這個屬性又超級好用,
而且有潛力用於未來撰寫 AJAX ,
GOOGLE一下之後發現可以用下面的語法,
如此一來 FF 也可以支援了!
 
1 document.getElementById("TextID").addEventListener("input", YourProgram, false);

其中 TextID 是文字方塊的 id,
第一個參數代表元件的類型,
第二個代表當文字方塊內容改變時所要執行的副程式,
第三個無關痛癢。

 

當然囉,在頁面上一定要考量到不同的瀏覽器,
所以要加上瀏覽器的判別:
 
1 if(navigator.userAgent.indexOf("MSIE")>0)
2   {
3     document.getElementById("TextID").attachEvent("onpropertychange", YourProgram);
4   }

5   else if(navigator.userAgent.indexOf("Firefox")>0)
6   {
7     document.getElementById("TextID").addEventListener("input", YourProgram, false);  
8   }
 
YourProgram 代表要執行的程式,
如此一來只要使用者在文字方塊中做任何改變 (撰寫、刪除文字,但不包括 onfocus 之類的動作),
都會去觸發並執行程式。