change事件須要兩個條件觸發:
keypress 能監聽鍵盤事件,但鼠標複製黏貼操做就無能爲力app
HTML5 出現的input事件: 只要輸入框內容發生變化便可觸發(IE: propertychange)
---------------------
文本域輸入字符有限制 如最多125個字符。 通常能夠用 max屬性
<textarea id="appy-reason" max="125"></textarea>
但textarea按enter鍵,會致使統計字數不一致。
max認爲125個字符時,用angular.element("#appy-reason).val().length統計出124個字符
這是由於enter鍵 :
有的系統 \n\r(<換行><回車> 2個字符)
有的系統 '\r'是回車,'\n'是換行(一個字符)
因此拋棄max屬性 ,利用onkeyup事件本身計算
-----------------------------------------------------------------
onkeyup沒法監聽到複製黏貼致使的內容變化,能夠使用oninput事件this
注:IE下 用 onpropertychangespa
<textarea ng-keydown = "addReason(event)" oninput = "angular.element(this).scope().addReason(event)" onproperty = "angular.element(this).scope().addReason(event)"> </textarea>
ng-keydown 要注意backspace鍵和delete鍵 字數-1
enter鍵,應該注意阻止事件冒泡
----------------------------------------------------------------
鍵盤與文本事件
按鍵順序:
keydown > keypress > keyup
keydown\ keypress 發生在文本變化以前 (keypress監聽不到backspace鍵和delete鍵)
backspace鍵 keyCode:8
delete鍵 keyCode:46
enter鍵 keyCode:13
-----------------------------------------------------------------