0

いくつかの jQuery で少し問題が発生しました。上下の矢印を使用して列をトラバースする、Excel のナビゲーション方法と同様のデータ入力グリッドを実装しようとしています。次のように、ロード時に実行されて各テキスト ボックスに rel 属性と一意の ID を割り当てるスクリプトがあります。

id="gScore_0" class="gScoreTB" rel=0
id="gScore_1" class="gScoreTB" rel=1
id="gScore_2" class="gScoreTB" rel=2

...などなど。次に、次のハンドラーがあります。

    $('.gScoreTB').keydown(function (e) {

        var keyCode = e.keyCode || e.which,
            arrow = { left: 37, up: 38, right: 39, down: 40 };

        switch (keyCode) {

            case arrow.up:

                var str = $(this).attr('rel');
                str = parseInt(str) - 1;
                $("#gScore_" + str).focus();
                break;

            case arrow.down:
                //Set focus to the same cell next row
                var str = $(this).attr('rel');
                str = parseInt(str) + 1;
                $("#gScore_" + str).focus();

                break;
        }
    });

理論は、関数がIDから1を加算/減算し、そのテキストボックスにフォーカスを設定するというものです。これはすべて素晴らしい銃で機能します。

問題は、フォーカスを変更し、ボックス内のテキストをすべて選択したいということです。.select()に加えて、テキストボックスで使用するさまざまな組み合わせを試しました.focus()が、それは起こっていません。イベントと関係があるのではないかと思いますが、私は jQuery の天才ではありません。助けてください!ありがとう

PS もし誰かが私がやったことをばかげていると思うなら、私は常に批判/改善を求めています:-)

4

1 に答える 1

1

わかりましたので、すべてを正しくコーディングしていないことがわかりました。次のように、イベントが DOM をバブリングするのを防ぎ、テキスト ボックスでの既定のアクションも防ぐ必要がありました。

e.preventDefault();
e.stopPropagation();

または、後でわかったreturn false;ように、上記の両方を呼び出すのと同じように which を使用することもできます。簡単!これらをイベントに追加すると、テキストボックスで停止したため、他の方法は正しく機能しました。これは、伝播の問題に答えた他の質問へのリンクです。

于 2013-05-07T01:54:27.453 に答える