實時獲取input輸入框中的值需要oninput和onpropertychange屬性來實現。原因是onpropertychange屬性為IE專屬,而oninput屬性支持大部分瀏覽器包括IE9及以上的版本。
oninput與onpropertychange失效的情況:
oninput事件:1. 在腳本中改變value時,不會觸發;2.從瀏覽器的自動下拉提示中選取時,不會觸發。
例如:
var testinput = document.createElement('input'); if('oninput' in testinput){ object.addEventListener("input",fn,false); }else{ object.onpropertychange = fn; }
或者
var ie = !!window.ActiveXObject; if(ie){ object.onpropertychange = fn; }else{ object.addEventListener("input",fn,false); }
下面舉個具體的例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin: 0; padding: 0; } input{ display: block; border:1px solid #090; width: 200px; height: 40px; line-height: 40px; font-size: 16px; margin: 50px auto; text-indent: 2em; } p{ width: 180px; padding-left: 10px; padding-right: 10px; height: 40px; background: #090; color: #fff; line-height: 40px; margin: 0 auto; } </style> </head> <body> <input type="text" id='btn' disable='disable' value="123"> <p id="title"></p> <script> var oBtn = document.getElementById('btn'); var oTi = document.getElementById('title'); if('oninput' in oBtn){ oBtn.addEventListener("input",getWord,false); }else{ oBtn.onpropertychange = getWord; } // var ie = !!window.ActiveXObject; // if(ie){ // oBtn.onpropertychange = getWord; // }else{ // oBtn.addEventListener("input",getWord,false); // } function getWord(){ oTi.innerHTML = oBtn.value; } </script> </body>> </html
演示: