2011-11-14 7 views
2

たとえば、ブログのタグ用のテキストボックスがあります。私が望むのは、タグの数を制限することです。 たとえば、 "web hosting、php、windows8"と入力します。 ユーザーがコンマで始まるテキストボックスに別のテキストボックスを入力しようとすると、テキストボックスはそのテキストボックスに書き込めません。テキストボックスにカンマが3つ未満になるようにテキストボックスを制限するにはどうすればよいですか?

+3

をあなたは私をしたい場合:探検の少しを使用すると、我々はすべて一緒にそれを置く場合、コマのキーコードは、だから、44

$("input").keypress(function(event) { if (event.which == 44) event.preventDefault(); }); 

であることを見つけることができますあなたが私を助けてくれるコンセプトを取得したい場合は、keyupイベントをキャッチして、カンマをフィルタリングして上限に達すると、他のコンマの挿入を防ぐようにします。 – Qchmqs

答えて

4

keypressハンドラでは、eventオブジェクトをキャプチャしてください。

if (event.which == 44 && $(this).val().split(",").length > 2) { 
    event.preventDefault(); 
} 

ここでの動作を参照してください。 http://jsfiddle.net/5L7mU/

+0

+1は、 split() ' – Tadeck

+0

すばらしい解決策。どうもありがとうございます。 – SNaRe

+0

+1非常に良いとスマートな解決策のために – Qchmqs

0
$(document).ready(function(){ 
    $('#textbox').keypress(function(e){ 
     var text = $(this).val(); 
     if(text.split(',').length>3){ 
      return false; 
     }else if(e.which==44&&text.split(',').length>2){ 
      return false 
     } 
    }); 
}); 

フィドル:

http://jsfiddle.net/L4X4C/

2

我々は3つの小さな問題にこの問題を分割することができます。

まず、ユーザーがテキストボックスに文章を書くのを止める方法が必要です。 keypressにコールバックをフックすると、渡されたイベントにはpreventDefaultというメソッドがあり、これを実行する必要があります。だから、すべての入力をブロックする:

$("input").keypress(function(event) { 
    event.preventDefault(); 
}); 

、テキストボックスに既に存在しているどのように多くの昏睡チェックするために、我々は正規表現を使用することができます。 match関数は、一致がない場合は空の配列の代わりにnullを返します。そのためにチェックする必要があります。

$("input").keypress(function(event) { 
    var matches = $(this).val().match(/,/g); 
    var count = 0; 
    if (matches) 
     count = matches.length; 
    console.log(count); 
}); 

最後に、ユーザーが昏睡状態になったかどうかを確認する必要があります。 eventオブジェクトには、入力された文字のキーコードを含むwhichというプロパティがあります。

$("input").keypress(function(event) { 
    var matches = $(this).val().match(/,/g); 
    var count = 0; 
    if (matches) 
     count = matches.length; 

    if (count >= 2 && event.which == 44) 
     event.preventDefault(); 
}); 

http://jsfiddle.net/4wn5W/

+0

段階的な説明のある良いsolutin。今私はこれがどのようにうまくいくのか知っています。ありがとうございました。 – SNaRe

+0

@SNaRe問題はありません。回答の横にある矢印を使用して貢献者に感謝し、見つかった回答をマークするチェックマークを使用して問題を最も解決するのを忘れないでください。 –

関連する問題