-1

重複の可能性:
jQueryイベントKeypress:どのキーが押されましたか?

以下のコードを使用して、ユーザーがテキストボックスに入力するときに、新しいスペース文字が検出されるたびにアラートを発行しています。これは、ユーザーが最初のスペースに入るまで機能します。これは、後続のスペースごとにアラートが発生するためです。

この文字列の場合:'test'アラートは1回発生しますが、これは正しいです

この文字列の場合:'test test'アラートは5回発生しますが、1回だけ発生する必要があります。

この文字列の場合:'testtesttest'アラートは3回発生する必要があります。

新しいスペース文字ごとにアラートが1回だけ発生するように、以下のコードをどのように修正できますか?

$("#myDiv").keyup(function() {    
    if$("#myDiv").val().indexOf(' ') != -1)
    {
        alert("space found");
    }   ​
};
4

3 に答える 3

4

イベント オブジェクトをコールバック関数に渡し、e.which == 32キーコード 32 (スペース) をテストします。

// keyup callback receives the Event object e
$("#myDiv").keyup(function(e) {
    // When the key pressed was space, alert...
    if (e.which == 32)  {
        alert("space found");
    }   
});​

http://jsfiddle.net/DL5pX/

于 2012-12-22T02:17:55.897 に答える
1

どうですか:

$("#myDiv").keyup(function() {

    var val = $(this).val(),
        len = val.length - 1;

    if (val[ len ] == ' ') {
        alert("space found");
    }

});

jsFiddle デモ

于 2012-12-22T02:16:30.080 に答える
0

次のコードでこれを行うことができます。

var x = false;
$(function() {
  $(document).keyup(function(e) {
    if (e.keyCode == 32) {
      x = false;
    }
  }).keydown(function(e) {
    if (e.keyCode == 32) {
      x = true;
      alert('space pressed!!');
    }
  });
}
于 2012-12-22T02:20:14.117 に答える