setTimeout
最後に入力してから 1 秒後に実行するように設定しましkeyup
た。ajaxサーバー側の検証を設定しています。
問題
何らかの理由で、これは 1 秒待ってから、2 回目の休憩を取る前に何回クリックしても発火します。最後のキーアップだけが 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
}
});
}
};
Jsフィドル