I have an ajax call triggering on the maxlength of an input. However, it continues to trigger if a user continues to enter characters (because they count as a keypress). Is ther
Use a boolean variable to know if a call has already been triggered (init it to false, assert it is still false before making a call, and set it to true when you make the call).
Set a .data
attribute on the field:
//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); }
});
Move the assignment inside the second if
statement if you want to keep running this until the zipcode is valid.
Try this:
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;
}
}
});