我有一個表中列出每行'筆記'字段。我希望能夠使用ajax進行更新,並在更新後顯示一條消息,但我正在努力弄清楚正確的代碼。阿賈克斯 - 但只有當用戶已經停止打字
我的計劃是捕獲一個按鍵,並將筆記ID傳遞給一個計時器,每當用戶按下一個鍵時它就會被重置,因此只有在鍵入1秒後纔會運行。問題是,在頁面上有多個註釋時,我需要將它傳遞給一個數組,並重新設置每個定時器,如果這甚至可能的話?
這裏是我的代碼:
var waitTime = 1000;
var click = false;
var timers = new Array();
$('.notes').keyup(function(){
var timerVariable = $(this).attr('id').split("-");
timerVariable = timerVariable[0];
timerVariable = timerVariable.replace('note', '');
timers.push(timerVariable);
timers[timerVariable] = timerVariable;
if(click==false){
var id = $(this).attr('id');
if(click==false){
click= true;
timerVariable = setTimeout(function(){doneTyping(id)}, waitTime);
}
}
});
$('.notes').keydown(function(){
for (var timer in timers) {
clearTimeout(timer);
}
click = false;
});
function doneTyping (id) {
var staffNo = id.split("-");
staffNo = staffNo[0];
staffNo = staffNo.replace('note', '');
var data = 'data='+id+'¬e='+$('#'+id).val();
$.ajax({
url: "update-notes.php",
type: "GET",
data: data,
cache: false,
success: function (html) {
jGrowlTheme('mono', 'Updated ' + staffNo, 'Thank you, the note has been updated.', 'tick.png');
}
});
}
我不知道問題是否可能與我打電話for循環,或其他東西的方式是什麼?任何建議將非常歡迎,謝謝!
這是一個很好的解決方案,謝謝 - 我從來沒有在jQuery中創建函數,所以它也非常有用。謝謝! –
不客氣。我在jsfiddle上添加了一個工作[demo](http://jsfiddle.net/didierg/2sx8w/)。 –