x字符后调用ajax

时间:2012-08-03 18:55:21

标签: ajax jquery

我有一个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");

        }
    }
});

3 个答案:

答案 0 :(得分: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); }

});

如果要在邮政编码有效期间继续运行,请在第二个if语句中移动分配。

答案 1 :(得分:0)

使用布尔变量来了解是否已经触发了一个调用(将其初始化为false,在进行调用之前断言它仍为false,并在进行调用时将其设置为true)。

答案 2 :(得分: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;  
        }
    }
});