Jquery - 输入键上的事件仅在TextBox中第一次按下

时间:2013-03-08 20:56:05

标签: jquery

我有一个TextBox,当用户按下Enter键时我发出了一个AJAX请求。

$('#TextBox1').on('keypress', function(e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 13) {
                e.preventDefault();
               // ajax request
            }  
        });

如何才能使该事件仅在用户第一次按下回车键时触发?

JSFIDDLE

3 个答案:

答案 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;
  }
});