Jquery - 模糊和键控多次触发



我有这段代码,它可以启用输入,专注于它,然后在您单击或按回车键时触发 ajax 请求。

$("body").on('click', '.input', function(){
id = $(this).attr('id');
$("#inp" + id).prop('disabled', false).focus();
$("#imp" + id).on('blur keyup',function(e) {  
if (e.type === 'blur' || e.keyCode === 13) {
$.ajax({ url : 'file.php?var=' + var + '&nextvar=' + nextvar, 
success: function(response) {
console.log (response);
} 
})
$("#imp" + id).prop('disabled', true);
}
});  
})

它似乎工作正常,除了按回车键导致它多次触发 ajax。

谁能建议为什么?

谢谢

只需添加一个简单的检查,是否完成。然后在您准备好进行另一次点击检查时刷新它

var done = false;
function ajaxCall() {
if(!done) {
$.ajax({ url : 'file.php?var=' + var + '&nextvar=' + nextvar, 
success: function(response) {
console.log (response);
done = true;
} 
});
}
$("#imp" + id).prop('disabled', true);
}
$(document).ready(function() { 
$("body").on('click', '.input', function(){
id = $(this).attr('id');
$("#inp" + id).prop('disabled', false).focus(); 
});
$("#imp" + id).on('blur',function(e) {  ajaxCall() });
$("#imp" + id).on('keyup',function(e) {  if(e.keyCode === 13) ajaxCall() });
});

这只运行一次(注意done = false(如果要重置它,请再次使全局"完成"var false。