我有这段代码,它可以启用输入,专注于它,然后在您单击或按回车键时触发 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。