這是關鍵代碼:如何在用戶上次輸入一段時間後發起包含AJAX請求的函數?
var ajaxCallTimeoutID = null;
$(document).ready(function() {
$("input[id^='question']").live('keyup',function(ev){
id=this.id.substr(8);
if (ajaxCallTimeoutID != null)
clearTimeout(ajaxCallTimeoutID);
ajaxCallTimeoutID = setTimeout(subjectivecheck(id), 1000);
});
});
然而,
subjectivecheck(ID) 當用戶輸入一個字母,立即執行,而是希望用戶已經停止打字後,它被稱爲持續一段指定的時間。如何解決這個問題呢?
function subjectivecheck(id){
var cost=(new Date().getTime() - start.getTime())/1000;
var value=$('#question'+id).val();
$.post("subjectivecheck.php?",{val:value, qid:id,time:cost, a_id:"<?php echo $announcementid; ?>"},function(xm){
switch(parseInt(xm)){
case 4:
{ $htm='Congrats,you have passed the test.';
$('#success').css({"color":"green"});
$('#success').text($htm);
return;
}
case 1:
{
$htm='V';
$('#sign'+id).css({"color":"green"});
$('#sign'+id).text($htm);
break;
}
case 0:{
$htm='X';
$('#sign'+id).css({"color":"red"});
$('#sign'+id).text($htm);
break;
}
case 3:{
$('#subjectivequestion').text('You have failed at this announcement.');
$('#choicequestions').text(" ");
}
}
});
}
當我用匿名函數包裝它時,主體檢查(id)永遠不會被調用。 – Steven 2009-12-28 15:46:09
它不工作.ajaxCallTimeoutID = setTimeout(function(){subjectivecheck(id)},1000); 不起作用。 – Steven 2009-12-28 15:57:19
我用警報而不是主觀檢查來測試,而且工作正常。這個問題與主觀檢查有關,而不是你在這裏發佈的代碼。 – Marius 2009-12-28 16:16:23