oninput事件(解決onkeyup無法監聽到復制黏貼)


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
-----------------------------------------------------------------
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM