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