2009-07-02 2 views
4

テキストの入力では3つの単語がスペースで区切られますが、3を超えるとユーザーはこれ以上入力できません。これはjQueryを使用して可能ですか? 私はlistenするためにkeyupイベントを使うことができますが、無効にすることなくユーザーがより多くのトークンを入力するのを止めるにはどうすればいいですか? これは、htmlのテキスト入力のネイティブのmaxlengthプロパティに似ていますが、この場合のmaxLengthはトークンの数です。jqueryのテキスト入力の長さの制御

+4

サーバー側もチェックすることを忘れないでください。ユーザーはJavaScriptをオフにすることができます。 –

答えて

8

入力がすでに3語で、スペースを入力しようとしているかどうかを確認してください。

$('#myTextbox').keydown(
    function(event) 
    { 
     var input = $(this).val(); 
     var numberOfWords = input.split(' ').length; 
     if(numberOfWords == 3 && event.keyCode == 32) 
     { 
      return false; 
     } 
    } 
); 

編集:そうfalseを返す場合 をどこ誰かがフィールド内の過去のテキストかもしれない状況について追加質問がありました。クロスブラウザのソリューションとして、おそらく@ karim79に似たコードをblurイベントにバインドします。

$('#myTextbox').blur(
    function(e) 
    { 
     var tokens = $(this).val().split(' '); 
     if(tokens.length > 3) 
     { 
      $(this).val(tokens.slice(0,3).join(' ')); 
     } 
    } 
); 
+0

+1固溶体 – karim79

+0

非常に良い。上記のように、ユーザーがコピーして入力に貼り付ける状況を処理するクロスブラウザの方法はありますか?ペーストイベントはブラウザ間ではありません。 – user121196

+0

ぼかしイベントは、テキスト入力が過去にフォーカスされていて、まだペースト後にフォーカスがあるので、実際にペーストを検出するためには機能しません。 他のアイデアですか? – user121196

3

EDIT:このような何かを行う必要があります(テスト):ユーザーがつ以上の単語を入力しようとすると

$('#myTextbox').keyup(function(e){ 
     var wordArr = $(this).val().split(' '); 
     if(wordArr.length > 3 && e.keyCode == 32) { 
      var arrSlice = wordArr.slice(0,3); 
      var newStr = arrSlice.join(' '); 
      $(this).val(newStr); 
     } 
    }); 

、内容は最初の三つの言葉で上書きされます。この解決策は、3つの単語が超過された場合に、入力されると文字が削除されることを示し、フィードバックを提供します。

これが望ましい動作でない場合は、@ Jataroの解決策があります。

+0

彼は全体の単語を許可する必要があると思う – Damien

+0

これは、誰かが右クリックして大量のテキストをフィールドに貼り付けるのを止めさせますか? – marcc

+0

おっと、ちょうどそれを見ました。編集中... – karim79

0

$('#myTextbox').change(

    function() 
    { 
     var input = $(this).val(); 
     var numberOfWords = input.split(' ').length; 
     if(numberOfWords > 3) 
     { 
       $(this).val(input.substring(0, input.lastIndexOf(' ')-1)); 
     } 
    } 
); 

、のようなものかもしれませ私はこのコードを確認していませんが、このようなものは動作するはずです。

そして、はい、mgrovesは言ったように、サーバー上のすべての再検証を忘れないでください。

関連する問題