开发者

jQuery how to make Enter (Return) act as Tab key through input text fields but in the end trigger the submit button

I've blocked Enter (return) key, actually, transformed it in Tab key. So when pressed inside input text fields it acts as Tab key. This is good, but I need it to trigger the submit button when pressed in the last field, bel开发者_运维技巧ow is the code for the Enter key mutation:

            $('input').keydown(function(event) {
                if(event.which == 13) {
                    event.preventDefault();
                    $(this).nextAll('input:first').focus();
                }
            });

And the form code is a sequence of input type="text" and a button type="submit" at the end [Edited] Actually the code is this one, taken from jquery: Enter to Tab trigger in specific parts. But I don't know why it was working yesterday today is not working:

$(':text').keydown(function(e) {
    if(e.keyCode == 13 && $(this).attr('type') != 'submit') {
        e.preventDefault();
        $(this).nextAll('input:first').focus();
    }
});


If you give your last input the class of last then simply modify your code to something like

$('input').keydown(function(event) {
            if(!$(this).hasClass("last")){
                if(event.which == 13) {
                    event.preventDefault();
                    $(this).nextAll('input:first').focus();
                }
            }
        });     


// Definir o que acontece quando o usuário pressiona ENTER
$('input, select, textarea').live('keydown', function(e) { // Para todos os campos do formulário
    if (e.which == 13) { // Se pressionou ENTER
        if (e.ctrlKey) { // Se pressionou CTRL
            $(this).closest('form').submit(); // Envia o formulário
        } else { // Se não
            var fields = $(this).closest('form').find('input, select, textarea'); // Criamos uma lista dos campos do formulário
            var total = fields.length; // Identificamos a quantidade de campos
            var index = fields.index(this); // Identificamos a posicao do campo atual
            fields // Da lista de campos, ...
                    .eq( // na posicao ...
                        index + // do campo atual + ...
                        (e.shiftKey // Pressionou a tecla SHIFT?
                            ? // Se pressionou ...
                                (index > 0 // A posição atual é maior que 0 (zero)?
                                    ? // Se for maior
                                        -1 // campo anterior
                                    : // Se não ...
                                        0 // Primeiro campo
                                )
                            : // Se não ...
                                (index < total // Posicao atual é menor que o total de campos?
                                    ? // Se for menor ...
                                        +1 // proximo campo
                                    : // Se não ...
                                        total // Último campo
                                )
                        )
                        // Neste momento ja encontramos o campo que deverá ser selecionado
                    ).focus(); // Selecionamos o campo
            return false; // Impedimos que a ação padrão seja executada (Envio do formulário)
        } // FIM - se não pressionou CTRL
    } // FIM - se pressionou ENTER
}); // FIM da função
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜