0

ユーザーが検索パラメーターを入力する入力があります。現時点では、検索結果を返すPHPスクリプトに対してPOSTajaxリクエストを実行するためのキーアップがあります。ただし、(文字通りではなく)500億の投稿リクエストを(ユーザーが入力すると)約10秒で起動するため、エクスペリエンス全体が遅くなります。jQueryを使用して、スペースバーの使用を検出することで「キーア​​ップ」ではなく「ワードアップ」を検出できますか?

これは意味がありますか?

4

4 に答える 4

5

最初の回答とはまったく異なるため、これを別の回答として追加します。

$('#yourinput').keyup(function(){
    var input = this,
        timer = $.data(this, 'timer'),
        lastrequest = $.data(this, 'lastrequest');

    if (timer) { // if there is a keyup timeout still pending, cancel it
        clearTimeout(timer);
        $.data(this, 'timer', 0);
    }

    if (lastrequest) { // if there is an AJAX request still running, abort it
        lastrequest.abort();
        $.data(this, 'lastrequest', false);
    }

    timer = setTimeout(function(){
        lastrequest = $.post({ // or whatever your AJAX call is...
            url: 'yourfile',
            data: { search: input.value },
            success: function(response){
                lastrequest = false;
                // handle response here
            }
        });
        $.data(input, 'lastrequest', lastrequest);
    }, 500);
    $.data(this, 'timer', timer);
});
于 2011-01-10T17:41:37.933 に答える
2
$('#yourinput').keyup(function(e) {
    if (e.which == 32) { // space key pressed
        // do your AJAX here
    }
});

event.whichこの機能の詳細については、を参照してください。

于 2011-01-10T17:32:11.000 に答える
1

ユーザーが特定の期間入力を停止したときの遅延のようなものを使用できますか?

おそらくこのようなものですか?スペースバーの押下をトリガーする機能を追加することもできます。(これはGoogleスタイルのインスタ検索にのみ使用されたため、役立つ場合と役に立たない場合があります)。

$('#Search').keyup(function (event) 
        {
            delay(function(){

            var textboxValue = $('#Search').val();

            if( textboxValue.length >= 2)
            {
              //Perform search
            }

        });
});

var delay = (function(){
var timer = 0;
    return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
};
})();
于 2011-01-10T17:30:50.297 に答える
1

あなたは確かにそうすることができました。keyup イベントをローカルで検出し、それらのスペースをチェックします。

しかし、接頭辞に一致するすべての検索結果を取得し、それらをデータ構造の JavaScript に送信するように工夫できれば、より多くの活用が得られます。詳細については、「デジタル検索ツリー」(「試行」とも呼ばれます) を参照してください。

于 2011-01-10T17:33:09.803 に答える