0

だから私は少し助けてくれました、そして私はもうすぐそこにいますが、私が特定のフィールドにいると仮定してエンターを押したときにフィールドフォーカスを持つことができるかどうか疑問に思っていました.

これは私のコードです: http://jsfiddle.net/spadez/xT5X5/2/

「受け入れられた」フィールドでEnterキーを押したときに「現在の」フィールドに焦点を合わせるには。これは、最初に何かを追加してから、追加されたフィールドをクリックして Enter キーを押すと表示されます。私はあまり運がなかったので、このコードを試しました:

$(".accepted").keyup(function(e) {
    if (e.which == 13) {
        $(".current").focus();
    }
});

また、これらの「入力」コマンドをコードに追加するより良い方法があるかどうか疑問に思っていました。より良い方法があるように思われるからです。

4

3 に答える 3

2

交換

$(".accepted").keyup(function(e) {
    if (e.which == 13) {
        $(".current").focus();
    }
});

と:

$(document).on("keyup",".accepted",function(e) {
    if (e.which == 13) {
         $(this).closest('.copies').next().find(".current").focus();
    }
});

デモをチェック

于 2013-06-25T13:41:52.217 に答える
1

コピーしたコードの一部を次のように変更する必要があります。

$('.form').on('keyup', '.accepted', function(e) {
    if (e.which == 13) {
        var line = $(this).parent(); // this targets '.line'
        //this targets line's "container", which is '.copy', then find all the .current's in the next node (.line)
        var current = $(line).parent().next().find('.current');

        //as var current returns a list with all the .current's found, even if there's only one, it returns an array of elements in case there were more, so we select the first one from the array
        current = $(current)[0];
        $(current).focus();
    }
});

説明: .accepted はドキュメントのロード後に作成されるクラスであるため、keyup 関数をバインドすると存在しません。

'.accepted' をターゲットにして、代わりに on() を使用する必要があります。

必要な「.current」を見つける方法を分割して理解できるようにしましたが、実際にはいくつかの方法で到達できます。私は理解しやすいと思ったものを使用しました。ここに動作するフィドルへのリンクがあります:http://jsfiddle.net/QaHB3/1/

于 2013-06-25T14:09:57.623 に答える