為textarea新增maxlength屬性

螞蟻小編發表於2017-02-26
在<input type="text">中有自帶的maxlength屬性,使用此屬性可以設定文字框輸入字串的最大長度。textarea多行文字框並沒有這樣的屬性,下面就來介紹一下如何為為textarea文字框新增此屬性。

例項程式碼如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>為textarea新增maxlength屬性-螞蟻部落</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript"> 
(function($){ 
  $.fn.textarealimit=function(settings){ 
    var newSettings={length:settings}
    settings=jQuery.extend({ 
      length:20 
    }, newSettings); 
    maxLength=settings.length; 
    $(this).attr("maxlength",maxLength)
    .bind("keydown",doKeydown)
    .bind("keypress",doKeypress)
    .bind("beforepaste",doBeforePaste)
    .bind("paste",doPaste); 
  
    function doKeypress() { 
      var oTR=document.selection.createRange() 
      if(oTR.text.length>=1){
        event.returnValue=true
      } 
      else if(this.value.length > maxLength-1) {
        event.returnValue=false
      }
    } 
    function doKeydown() { 
      var _obj=this; 
      setTimeout(function() { 
        if(_obj.value.length > maxLength-1) { 
          var oTR=window.document.selection.createRange() 
          oTR.moveStart("character",-1*(_obj.value.length-maxLength)) 
          oTR.text="" 
        } 
      },1) 
    } 
    function doBeforePaste() { 
      event.returnValue = false 
    } 
    function doPaste() { 
      event.returnValue = false 
      var oTR = document.selection.createRange() 
      var iInsertLength = maxLength - this.value.length + oTR.text.length 
      var sData = window.clipboardData.getData("Text").substr(0, iInsertLength) 
      oTR.text = sData; 
    } 
  } 
})(jQuery); 
$(document).ready(function(){ 
  $("#mulText").textarealimit(2); 
}); 
</script>
</head>
<body>
<textarea id="mulText"></textarea>
</body>
</html>

以上程式碼實現了為多行文字框新增maxLength屬性。

相關文章