2011-12-29 29 views
19

jqueryを使用して、編集可能なdiv(またはフォーム入力)の文字数を制限します。 inputタグ入力フィールドの文字数を制限する

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

? – stivlo

+1

投稿を見る http://stackoverflow.com/questions/2867479/limiting-number-of-characters-in-a-contenteditable-div – Parham

+0

@stivlo b/cその編集可能なdiv – Firdous

答えて

5

すべてのキー操作を確認することができます。あなたは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> 

編集を次の項目を確認してください:あなたはこの機能をサポートしているブラウザのタブと改行

+1

これは、div contenteditableの代わりに "input"を使用した場合を除き、最大長 – Navarr

42

メイク使用あなたはjQueryのを利用したい場合は、あなたが何かを自分で書くか、ちょうどそのようなthis oneなどの既存のプラグインを使用することができます。

しかし、私はdku.rajkumarに同意します... maxlength属性を使用すると何が問題になりますか?

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

あなたが最大のjQueryのファンなら、これまでけれどもと必死に一度にすべての入力フィールドにmaxlengthを設定したいようなものです:

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

ちょうどかかわらず、心に留めておきます何らかの理由でJavaScriptが無効になっている人には、このメソッド(JQueryのメソッド)は機能しません。 inputタグのmaxlength属性は、すべてのブラウザのすべてのユーザーに機能します。

+0

NICE MAN。 ..:) –

0

「maxlength」という属性を使用するだけです。入力の属性について詳しくは、w3 input

4

と入力してみましょう。
あなたは 'maxlength'属性でそれを行うことができますが、 'jQueryを使用する'と言う場合は
の解決策があります。

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

またはあなたがMAXLENGTH属性を使用することができ、入力フィールドのためとして、あなたは

$('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のattribute-を、無視するcheckMaxLength機能を書き換える必要があります。
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

を超えてコンテンツを設定するペーストを考慮していません:) –

+2

...おそらくすべてのブラウザがコンテンツを編集可能にサポートしているわけではないからです...セルゲイの答えはここで最高のものです:) – Rob

+0

これは '$ this.val($ this.val()。substring(0、maxCount-1)) ; '0から始まる部分文字列を考慮する私が間違っていれば私を訂正してください。そして、はい、これは古いスレッドですが、それでも人々が読むことができます。 – redfox05

8

これは私が考えるあなたのために働く必要があります。

HTML

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

jQueryのフォーム入力のためにMAXLENGTHと間違って何

$('#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

関連する問題