change事件需要兩個條件觸發:
a)當前對象屬性改變,並且是由鍵盤或鼠標事件激發的(腳本觸發無效)
b)當前對象失去焦點(onblur)
keypress 能監聽鍵盤事件,但鼠標復制黏貼操作就無能為力
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事件
注:IE下 用 onpropertychange
<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
-----------------------------------------------------------------