限制textarea的輸入字數


  今天接到任務的第一個需求是限制字數,查看了一下之前人留下來的代碼,使用的是textarea,於是就想當然的用了maxlength,結果發現無用。查閱得知,原來textarea對於maxlength的支持要到ie10了,客戶偏偏要求開發環境是ie8。。。只好重新尋找方法。

這里的需求難點主要是不單單對於鍵盤輸入需要限制,同時對於復制粘貼也要限制。最好的方法就是在用戶超過限制的時候,彈出彈框,並強制取范圍內的輸入字符。這樣能夠較好的實現前端的用戶要求,對於以后的數據庫處理也比較方便。

原本想的是用key相關方法來檢測,具體方法寫法很簡單:

1     <script>
2         function LimitTextArea(field) {
3             maxlimit = 4000;
4             if (field.value.length > maxlimit) {
5                 field.value = field.value.substring(0, maxlimit);
6                 alert("字數不得多於4000!");
7             }
8         }
9     </script>
1 <textarea id="mqOne" name="mqOne" cols="10" rows="5" style="width: 200px" onKeyDown="LimitTextArea(this)" onKeyUp="LimitTextArea(this)" onkeypress="LimitTextArea(this)"></textarea>

但是事實證明這個方法對於鼠標操作無法檢測,對於ctrl+v倒是可以。最后采用的是onpropertychange方法:

<textarea id="mqOne" name="mqOne" cols="10" rows="5" style="width: 200px" onpropertychange="LimitTextArea(this)"></textarea>

可是這也是IE專有的方法,FF之類的可以使用oninput的方法,使用方法同樣:

<textarea id="mqOne" name="mqOne" cols="10" rows="5" style="width: 200px" oninput="LimitTextArea(this)"></textarea>

如果使用了瀏覽器檢測可以分開,如果沒有可以把兩個屬性寫在一起同時使用,暫時沒發現什么問題。


免責聲明!

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



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