0

ASP.NET ページに jQuery を少し混ぜて使用していますが、本来の動作をしていないようです。ユーザーが(Excelのように)列を上下に移動できるように、上下の矢印を再割り当てしてテキストボックスのキーを入力しようとしています。イベント ハンドラーを正常にセットアップして動作しますが、次の部分を正しく動作させることができません。

e.preventDefault;
e.stopPropogation;

特にエンターキーを使用すると、これらの2行が入っていてもフォームを送信しています。それを機能させる唯一の方法は次のとおりです。

event.cancelBubble = true;
event.returnValue = false;

しかし、私が読んだことから、2 つの jQuery メソッドはブラウザーに依存しないため、これらを使用しないでください。このすべてを理解するのに役立つものは素晴らしいでしょう:-)

更新 次のようなブロックにハンドラーがあります。

    //handles the up/down arrow behaviour of the score boxes
    $('.gScoreTB').keydown(function (e) {

        if (event.keyCode == 13) {
            event.cancelBubble = true;
            event.returnValue = false;
        }

    });

現時点で Enter キーの動作を停止しようとする単純な例: これが確定すると、他の矢印に keyCode == 38 と 40 が追加されます。

4

1 に答える 1

3

preventDefaultとはどちらstopPropagationも関数なので、次のようにする必要があります。

e.preventDefault();
e.stopPropogation();

ただし、次のようにする方が簡単ですreturn false(両方を呼び出すのと同じです)。

//handles the up/down arrow behaviour of the score boxes
$('.gScoreTB').keydown(function (e) {

    if (e.keyCode == 13) {
        return false;
    }

});
于 2013-05-07T01:37:34.410 に答える