1

開発中のサイトでライブ検索を行っています。現時点では、最初の文字が入力された後にMySqlデータベースを検索し、新しい文字ごとに検索を更新します。をSpace最初の文字として押すと、データベース内のすべてのエントリが表示されます。私はそれをしたくありません。SPACE文字を入力できない場所で見つけた次のコードがあります。

$('input[type="text"]').keydown(function(e){
  var ignore_key_codes = [8,32];
  if ($.inArray(e.keyCode, ignore_key_codes) >= 0){
  e.preventDefault();
 }
});

これは本来の目的を果たしますが、私が望んでいることとは異なります。これにより、スペースバーがテキスト入力で機能しなくなります。必要なのは、スペースバーが最初に入力された文字である場合にのみスペースバーが機能しないことです。たとえば、「apples」と入力するとスペースがなくなりますが、「applesoranges」と入力するとスペースがなくなります。

これを達成するために私が試みることができるものはありますか?

4

3 に答える 3

2

この例のように簡単に行うことができます。

function keyPress(e) { 
    var e = window.event || e;
    var key = e.keyCode;
    //space pressed
    if (key == 32) { //space
        return;
    }
    searchInDataBase(); //make your ajax call to search in data base etc.
}

キーが押された場合はspace、戻って何もしないでください。それ以外の場合は、検索を続行します...

于 2012-10-29T11:35:43.343 に答える
1

@Florentのコメントに続いて、ユーザーがテキストボックスに値を入力するときに、トリミングされた値が!=''であるかどうかを確認します。そうであれば、続行しても安全です。

例えば

if($.trim($txtbox.val()) != ''){ // proceed to do search

}
于 2012-10-29T11:36:35.083 に答える
1
$('input[type="text"]').keydown(function(e){
    if (e.keyCode == 32 && $.trim($(this).val()) == ''){
        e.preventDefault();
    } else {
        alert("searching..");
    }
});

デモ: http: //jsfiddle.net/BerkerYuceer/JJG9M/

于 2012-10-29T11:53:04.883 に答える