Я установил свой setTimeout
для запуска через 1 секунду после ввода последнего keyup
. Я настраиваю проверку на стороне сервера ajax.SetTimeOut укладывает все нажатые клавиши и срабатывает после окончания таймаута
Проблема
По какой-то причине, это будет ждать 1 секунду, а затем огонь для однако много кликов я назад, прежде чем принимать второй перерыв. Я бы хотел, чтобы только последний keyup запускал вызов ajax.
Код
form.items = {
init:function(){
this.call();
},
call:function(){
//Check all visible elements
form.init.mainItems.each(function(){
$(this).keyup(function(){
form.items.main($(this));
});
});
},
main:function(myself){
form.ajaxEvents.ajaxTimer = setTimeout(function(){form.ajaxEvents.call(myself);}, form.ajaxEvents.ajaxTimerSetting);
}
}
};
//Setting up the timer
form.ajaxEvents.ajaxTimer = setTimeout(function(){
form.ajaxEvents.call(myself);
}, form.ajaxEvents.ajaxTimerSetting);
form.ajaxEvents = {
ajaxTimerSetting:1000,
ajaxTimer:null,
call:function(me){
clearTimeout(form.ajaxEvents.ajaxTimer);
//turn off so we wait for ajax to complete
$.ajax({
url:'registration/ajax/'+item,
data:{"info":me.val()},
type:'post',
success:function (data) {
//data
}
});
}
};
JsFiddle
JS Fiddle for full working code and error described
Вы должны использовать [clearTimeout()] (https://developer.mozilla.org/en/DOM/window.clearTimeout) с SetTimeout() – orszaczky
'clearInterval' в основном используется для остановки запроса сервера, когда вы пишут супер быстро. Как я пишу 4 буквы за секунду, так что он перестанет запрашивать сервер в течение одной секунды, как указано в 'setTimeout', а затем он будет продолжен, он будет использоваться в некоторой оптимизации. – Mehmood