3

入力の最大長でトリガーされるajax呼び出しがあります。ただし、ユーザーが文字を入力し続けるとトリガーされ続けます(キーを押したと見なされるため)。5文字の制限後に追加のajax呼び出しを防ぐ方法はありますか?

html

<input type="text" value="" id="billZipCode" name="billZipCode" class="smallInput coreAddrBill" maxlength="5">

javascript

//show city/state on input maxlength
$("input#billZipCode").live("keyup", function( event ){
    if(this.value.length == this.getAttribute('maxlength')) {
        if ($(this).valid() == true ) {
            zipLookup(this, "USA");

        }
    }
});
4

3 に答える 3

2

.dataフィールドに属性を設定します。

//show city/state on input maxlength
$("input#billZipCode").live("keyup", function( event ){

    if(this.value.length == this.getAttribute('maxlength')) {
        if(!$(this).data('triggered')) {
            // set the 'triggered' data attribute to true
            $(this).data('triggered',true); 
            if ($(this).valid() == true ) { zipLookup(this, "USA"); } 
        }
    } else { $(this).data('triggered',false); }

});

郵便番号が有効になるまでこれを実行し続ける場合は、割り当てを2番目のifステートメント内に移動します。

于 2012-08-03T18:58:14.110 に答える
0

これを試して:

var ready = true;
$("input#billZipCode").on("keyup", function( event ){
    if(this.value.length == this.getAttribute('maxlength')) {
        if ($(this).valid() && ready) {
            zipLookup(this, "USA");
            ready = false;  
        }
    }
});
于 2012-08-03T19:00:45.653 に答える
0

ブール変数を使用して、呼び出しがすでにトリガーされているかどうかを確認します(falseに初期化し、呼び出しを行う前にfalseをアサートし、呼び出しを行うときにtrueに設定します)。

于 2012-08-03T18:56:43.843 に答える