11

入力フィールドがあり、キーアップ イベントがあります。

$(document).ready(function() {
    $('#SearchInputBox').keyup(function() {
        DoSearch($(this).val());
    });
});

ユーザーが 1 秒間入力を停止したときにのみ DoSearch 関数を実行するように、遅延時間を追加するにはどうすればよいですか。ユーザーがキーを入力するたびに実行し続けたくありません。入力が速くなると遅れてしまうからです。

4

1 に答える 1

17

基本的に、キーアップごとにタイムアウトを設定します。既にタイムアウトが実行されている場合は、それをクリアして別のタイムアウトを設定します。このDoSearch()関数は、タイムアウトが別のキーアップによってリセットされずに完了することが許可されている場合 (つまり、ユーザーが 1000 ミリ秒入力を停止した場合) にのみ実行されます。

var timeout = null;
$('#SearchInputBox').on('keyup', function () {
    var that = this;
    if (timeout !== null) {
        clearTimeout(timeout);
    }
    timeout = setTimeout(function () {
        DoSearch($(that).val());
    }, 1000);
});
于 2013-06-10T17:11:35.597 に答える