我有一个脚本,当按下回车键时将信息存储到DB中。
<textarea class="comment" name="comment" id="comment" onKeyPress="return checkSubmit(event)" onKeyDown="return checkTypingStatus(event)" >Comment/Reply</textarea>
function checkSubmit(e)
{
if(e && e.keyCode === 13)
{
var sender = <?=$_REQUEST['sender'];?>;
var user_id = <?=$_SESSION['userid'];?>;
var cid = <?=$_REQUEST['cid'];?>;
var comment = $("#comment").val();
comment = encodeURIComponent(comment);
var dataString = 'sender='+ sender + '&user_id=' + user_id + '&comment=' + comment + '&cid=' + cid;
if(comment=='' || comment=='Comment%2FReply')
{
alert('Please Give some text into message box.');
}
else
{
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="images/ajax-loading.gif" align="absmiddle"> <span class="loading">Sending Message...</span>');
$.ajax({
type: "POST",
url: "ajax_comment.php",
data: dataString,
cache: false,
success: function(html){
$("p#update").append(html);
$("p#update").fadeIn("slow");
document.getElementById('comment').value='';
$("#comment").focus();
$("#flash").hide();
}
});
}
return false;
}
}
一切正常,除非用户长时间按住回车键,多次存储相同的信息,直到输入被释放。
我在onKeyUp事件中尝试过相同的脚本。但是脚本不能正常工作。
答案 0 :(得分:2)
只需设置一个锁即可禁用ajax请求,直到最后一个请求完成:
var lock = false;
function checkSubmit(e)
{
if(e && e.keyCode === 13 && !lock)
{
lock = true;
....
$.ajax({
....
success: function(html){
lock = false;
...
另一种选择可能是禁用textarea并检查它是否被禁用而不是使用锁定,但我认为您已经了解了这个示例。