2

TextBox があり、ユーザーが Enter キーを押したときに AJAX リクエストを作成します。

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

ユーザーが最初に Enter キーを押したときにのみこのイベントが発生するようにするにはどうすればよいですか?

JSFIDDLE

4

3 に答える 3

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 の例

試す:

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 の例

于 2013-03-08T20:57:37.843 に答える
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;
        }

    });
于 2016-12-26T06:20:17.713 に答える
-2

私はちょっと似たような問題に陥っていました。以下のコードは私にとってはうまくいきます。

var executed = false;
$(document).on("keydown", function () {
  if (executed === false) {
    executeForOnce();
    executed = true;
  }
});
于 2021-01-13T09:52:44.403 に答える