I am trying to defer an AJAX request so that it is sent 2-3 seconds after the LAST keyboard of the input cell.
So far I have been able to defer requests, but after 2-3 seconds I get one request sent for each keyboard in the field ...
How can I get jQuery to cancel the first ones and just send the last keyboard?
Here's the code for now:
$('#lastname').focus(function(){ $('.terms :input').val("");
This code above waits 1 second and then sends 4-5 AJAX requests depending on the keystrokes. I just want one to send after the last keyup
I found several similar solutions in StackOverflow that use Javascript, but I could not implement them in my project due to my little programming knowledge.
[SOLVED] Final working code, thanks @ Dr.Molle:
$('#lastname').focus(function(){ $('.terms :input').val(""); }).keyup(function(){ caps(this); $type = $(this).attr("id"); window.timer=setTimeout(function(){
Here is the ajaxSearchRequest code:
function ajaxSearchRequest($type){ var ajaxRequest2; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari ajaxRequest2 = new XMLHttpRequest(); }catch (e){ // Internet Explorer Browsers try{ ajaxRequest2 = new ActiveXObject("Msxml2.XMLHTTP"); }catch (e) { try{ ajaxRequest2 = new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ // Something went wrong alert("Browser error!"); return false; } } } ajaxRequest2.onreadystatechange = function(){ if(ajaxRequest2.readyState == 4){ $result = ajaxRequest2.responseText; $('#resultcontainer').html($result); }} var searchterm = document.getElementById($type).value; var queryString ="?searchterm=" + searchterm +"&type=" +$type; if(searchterm !== ""){ ajaxRequest2.open("GET", "searchrequest.php" + queryString, true); ajaxRequest2.send(null); } }
krasatos
source share