我有一个表格列表,每行都有一个“注释”字段。我希望能够使用 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 循环的方式上,还是其他什么?非常欢迎任何建议,谢谢!
最佳答案
我是这样做的:
var t;
$(document).ready(function() {
$('#search_string').keyup(function() {
clearTimeout (t);
t = setTimeout('start_ajax()', 3000);
});
});
start_ajax() {
// Do AJAX.
}
关于javascript - Ajax - 但仅当用户停止输入时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939175/