2011-12-29 98 views
19

我想使用jquery來限制可編輯div(或表單輸入)中的字符數。在input標籤限制輸入字段中的字符數

<input type="text" maxlength="20" /> 
+14

有什麼錯最大長度爲表單輸入? – stivlo 2011-12-29 14:49:04

+1

看看這篇文章 http://stackoverflow.com/questions/2867479/limiting-number-of-characters-in-a-contenteditable-div – Parham 2011-12-29 14:52:01

+0

@stivlo b/c它的一個可編輯div – Firdous 2011-12-29 15:20:39

回答

5

至於你可以使用maxlength屬性輸入字段。如果您正在尋找DIV,檢查以下,

 $(function() { 

      $ ('#editable_div').keydown (function (e) { 
       //list of functional/control keys that you want to allow always 
       var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145]; 

       if($.inArray(e.keyCode, keys) == -1) { 
        if (checkMaxLength (this.innerHTML, 15)) { 
         e.preventDefault(); 
         e.stopPropagation(); 
        } 
       } 
      }); 

      function checkMaxLength (text, max) { 
       return (text.length >= max); 
      } 
     }); 

     <div id="editable_div" contentEditable="true" onclick="this.contentEditable='true';" >TEXT BEGIN:</div> 

編輯:你應該重寫checkMaxLength函數忽略製表符和換行符

+1

這不考慮粘貼,將設置的內容超過最大長度 – Navarr 2012-09-27 19:31:53

42

化妝用的maxlength如果你想使用jQuery的,你可以自己寫一些東西或者只是使用現有的插件,如this one

但我同意dku.rajkumar ...使用maxlength屬性有什麼問題?

<input type="text" maxlength="15" /> 

如果你是最大的JQuery風扇不斷雖然拼命地想一次做這樣的事情的maxlength設置爲所有輸入的字段:

$(document).ready(function() { 
    $('input[type="text"]').attr({ maxLength : 15 }); 
}); 

只要記住,雖然這個方法(JQuery的)不適用於JavaScript(禁止任何JavaScript)的人。儘管input標記的maxlength屬性適用於所有瀏覽器上的所有人。

+0

NICE MAN。 ..不知道maxlength命令工作的HTML 4瀏覽器.. :) – 2014-03-20 07:07:58

0

只使用稱爲「maxlength」的屬性。您可以在w3 input

4

瞭解更多關於輸入的屬性。假設它是表單輸入。
你可以用'maxlength'屬性來做,但如果你說'使用jQuery',
這裏的解決方案。

$('input#limited').attr('maxlength', '3'); 

,或者你可以檢查每一個按鍵

$('input#limited').keypress(function() { 
    /* 
    check for 3 or greater than 3 characters. 
    If you check for only greater than 3, then it will let 
    you write the fourth character because just before writing, 
    it is not greater than three. 
    */ 
    if($(this).val().length >= 3) { 
     $(this).val($(this).val().slice(0, 3)); 
     return false; 
    } 
}); 
17

MAXLENGTH屬性 - 爲瀏覽器,支持此功能。
Javascript - 對其他人。

<input class="test-input" type="text" maxlength="12" /> 
<script> 
$('.test-input').unbind('keyup change input paste').bind('keyup change input paste',function(e){ 
    var $this = $(this); 
    var val = $this.val(); 
    var valLength = val.length; 
    var maxCount = $this.attr('maxlength'); 
    if(valLength>maxCount){ 
     $this.val($this.val().substring(0,maxCount)); 
    } 
}); 
</script> 

http://jsfiddle.net/tvpRT/

+0

非常好,除了你用「輸入」,而不是一個div contenteditable :) – 2013-05-13 09:18:05

+2

...可能是因爲不是所有的瀏覽器都支持可編輯的內容...謝爾蓋的回答是最好的一個:) – Rob 2014-01-02 23:41:02

+0

不應該這是'$ this.val($ this.val()。substring(0,maxCount-1)) ;'說明從0開始的子串?請糾正我,如果我錯了。是的,這是一箇舊線程,但仍然被人讀取。 – redfox05 2014-11-17 13:12:29

8

這應該爲你工作,我認爲。

HTML

<input type="text" name="myText" id="myText" data-maxlength="10" /> 

jQuery的

$('#myText').keyup(validateMaxLength); 

function validateMaxLength() 
{ 
     var text = $(this).val(); 
     var maxlength = $(this).data('maxlength'); 

     if(maxlength > 0) 
     { 
       $(this).val(text.substr(0, maxlength)); 
     } 
} 
+0

不錯的原創! :) – RicardoE 2016-12-07 16:48:17