我有一个TextBox,当用户按下Enter键时我发出了一个AJAX请求。
$('#TextBox1').on('keypress', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
e.preventDefault();
// ajax request
}
});
如何才能使该事件仅在用户第一次按下回车键时触发?
答案 0 :(得分:6)
使用jQuery的 .one()
函数。
$('#TextBox1').one('keypress', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
e.preventDefault();
// ajax request
}
});
.one()
与.on()
类似,但只执行一次。
<击>的 jsFiddle example 强> 撞击>
尝试:
var foo = false;
$('#TextBox1').on('keypress', function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13 &! foo) {
e.preventDefault();
console.log("pressed");
foo = true;
}
});
<强> jsFiddle example 强>
答案 1 :(得分:0)
我有同样的问题,并通过以下代码解决.... 它的工作正常。我希望这段代码也可以帮到你。
var EnterKeyPressed = false;
$('#TextBox1').keypress(
function (e) {
if (e.keyCode == 13 && EnterKeyPressed == false) {
EnterKeyPressed = true;
return true;
}
if (e.keyCode == 13 && EnterKeyPressed == true) {
return false;
}
});
答案 2 :(得分:-1)
我遇到了类似的问题。顺便说一句,下面的代码对我有用。
var executed = false;
$(document).on("keydown", function () {
if (executed === false) {
executeForOnce();
executed = true;
}
});