3

setTimeout()JavaScript 関数を jQuery 式に追加しようとしています。setTimeout()my 関数を使用しない場合、テキスト ボックスにテキストを入力すると、更新された情報で部分ビューが読み込まれます。ただし、キーストロークごとに情報をロードします。私の論理では、タイマーを設定できれば、ユーザーが入力を停止すると、1 秒後にデータが更新されます。

ご覧のとおり、 を入れようとしましたsetTimeout()が、機能していないようです。

$(function() {
    $('#DocId').live('keyup', function() {
        setTimeout(var styleValue = $(this).val();
        $('#tableContent').load(
        '/CurReport/TableResults', 
        { style: $(this).val()}), 1000);

    }),
});

ありがとうございました、

アーロン

4

1 に答える 1

5

.data()次のように、すべてのキーストロークをリセットする遅延タイマーを使用して入れることができます。

$('#DocId').live('keyup', function() {
  clearTimeout($.data(this, 'timer'));
  var val = $(this).val();
  var wait = setTimeout(function() {
    $('#tableContent').load('/CurReport/TableResults', { style: val });
  }, 1000);
  $(this).data('timer', wait);
});

これにより、入力された要素のキーストロークごとに 1 秒のタイムアウトが設定されます (これらは一度にいくつでも実行できます)。キーストロークごとに前のタイマーがクリアされ、新しいタイマーが設定されるため、1 秒間入力しないと関数が起動します。

注: この部分を削除しないでください。関数が実際に実行されるときのコンテキストが異なるvar val = $(this).val();ため、変数が必要です。this

于 2010-03-26T15:05:57.030 に答える