0

この機能を使用してプレスをチェックし、Enter Keyプレスの動作を模倣していTab Keyます。Enter Keyただし、ユーザーが最後の input:text に到達すると、関数を使用せずに受け入れてほしい

これは可能ですか?

$('input').live("keypress", function (e) {
    /* ENTER PRESSED*/
    if (e.keyCode == 13) {
        /* FOCUS ELEMENT */
        var inputs = $(this).parents("form").eq(0).find(":input");
        var idx = inputs.index(this);
        if (idx == inputs.length - 1) {
            inputs[0].select()
        } else {
            inputs[idx + 2].focus(); // Skips two inputs
            inputs[idx + 2].select();
        }
        return false;
    }
});
4

1 に答える 1

2

returnステートメントをelseブロックに移動する必要があります。

$(document).on('keypress', 'input', function (e) {
    /* ENTER PRESSED*/
    if ( e.keyCode == 13 ) {
        /* FOCUS ELEMENT */
        var inputs = $(this).closest('form').find(":input");
        var idx = inputs.index(this);
        if (idx == inputs.length - 1) {
            inputs[0].select()
        } else {
            inputs[idx + 2].focus(); // Skips two inputs
            inputs[idx + 2].select();
            return false;
        }
    }
});

PSセレクターのキャッシュを検討する必要があります。あなたの特定のユースケースがわからないので、適切にお手伝いすることはできませんが、キーを押すたびにDOMを照会することは、災害のレシピです.


これをどのように使用しているかを正確に知らなくても、キャッシュの簡単な例を次に示します。

var inputs;

$(document).on('keypress', 'input', function (e) {
    if ( e.keyCode == 13 ) {
        inputs = inputs || $(this).closest('form').find(":input");
        // The rest of your code...
    }
});

これは、すでに値があるかどうかをチェックinputsし、ない場合は DOM を照会します。

于 2012-10-28T22:51:08.407 に答える