0

バインディング用のコンテンツを取得するためにJqueryAJAX呼び出しを使用していました。ajax呼び出しで操作を実行できるようにするには、しばらく遅らせる必要があります。JavascriptでsetTimeoutを使用した例を見てきました。しかし、私はそれを私の場合に使用する方法を知りません。試しましたが、機能しません。plsは私のコードを正常に動作するように修正します。

コード

    $('#ISBN').keyup(function () {
    window.setTimeout(function () {
        var value = $(this).val();
        var Cat = $(this).attr("Id");
        if (value == "" || value == '') {
            $('.Table').remove();
        }
        else {
            $.post('@Url.Action("AutoBibs", "PoDetails")', { Val: value, Category: Cat }, function (data) {

                if (Cat == "ISBN") {
                    $('.Table').remove();
                    $('#' + Cat).after('<div id="ISB" class="find" style="width: 10px !important; margin-left: 0px;"><span id="tablepartial"></span>');
                    $('#ISB').html(data);
                    $('#' + Cat).removeClass("wait");
                }                
          });
        }
    }, 2000);
});

ありがとう

4

2 に答える 2

5

this要素ではなくオブジェクトをsetTimeout参照するコンテキスト内では、コンテキスト外で変数を宣言するか、オブジェクトをキャッシュする必要があります。window#ISBNvaluesetTimeout$(this)

var t = '';
$('#ISBN').keyup(function () {
    clearTimeout(t);
    var value = $(this).val(); // this.value
    // or cache the object
    // var $this = $(this); 
    t = setTimeout(function () {
    // var value = $this.val(); 
    // ...     
    }, 2000);
});
于 2013-01-29T07:08:41.767 に答える
0
var searchTimeout = null;
$('#ISBN').keyup(function () {
    clearTimeout(searchTimeout);

    searchTimeout = setTimeout(function () {
        // Here you have the search method
    }, 500);
});
于 2013-01-29T07:19:22.583 に答える