我创建了一个脚本,只要发生密钥,就会将输入信息从脚本发送到脚本。问题是,只要按下任何键,它就会发送请求(显然)。这意味着当按下例如箭头键时,某些请求无效。有没有办法删除这些请求,或者它们是否发生无关紧要?
$('input[name="rusername"]').on("focus keyup", function() {
// if ($(this).val() === '') $('#rusererr').html('Enter your desired username; between 8 and 32 characters');
var username = $(this).val();
$.post("register.php", {
rusername: username
}, function(stuff) {
//daca nu sunt erori
if (stuff==='1') alert(stuff);
else alert(stuff);
});
});
答案 0 :(得分:1)
检查密钥代码:
$('input[name="rusername"]').on("focus keyup", function(e) {
var keyCode = e.which;
if (keyCode != 13) {
//AJAX
} else {
return;
}
});
我使用13
作为示例,您必须查找要排除的密钥代码。
答案 1 :(得分:0)
检查密钥的某些密钥。
答案 2 :(得分:0)
你可以这样做
var exclude = [37, 38, 39, 40] // arrow keys, you can add more.
$('input[name="rusername"]').on("focus keyup", function(e) {
var keyCode = e.which || e.keyCode;
if (exclude.indexOf(keyCode) == -1) {
// do ajax here
} else { return; }
});
答案 3 :(得分:0)
为什么要对每个关键操作发送ajax请求?
仅在输入的blur事件上发送ajax请求大大减少了AJAX调用的次数,并且不需要乱用密钥代码(密钥代码是一个非常棘手的主题!)。如果您必须这样做,请将结果保存在localStorage
之间,如果您进行一些无意义的保存操作则无关紧要。
$("#input").on("blur",function(){
$("#result").html("An Ajax call would be triggered now!");
});
$("#input").on("keyup",function(){
$("#result").html("The following string will be save locally: "+this.value);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="input" type="text">
<br><br>
<div id="result">
</div>
&#13;