[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 }
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 之類的動作),
都會去觸發並執行程式。