jQuery, как заставить Enter (Return) действовать как клавишу Tab через поля ввода текста, но в конце вызвать кнопку отправки - PullRequest
5 голосов
/ 29 апреля 2011

Я заблокировал клавишу Enter (возврат), фактически преобразовал ее в клавишу Tab. Поэтому при нажатии внутри полей ввода текста он действует как клавиша Tab. Это хорошо, но мне нужно, чтобы она вызывала кнопку отправки при нажатии в последнем поле, ниже приведен код мутации клавиши Enter:

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

И код формы представляет собой последовательность input type = "text" и button type = "submit" в конце [Изменено] На самом деле этот код взят из jquery: ввод в триггер табуляции в определенных частях . Но я не знаю, почему он работал вчера, сегодня не работает:

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

Ответы [ 2 ]

6 голосов
/ 29 апреля 2011

Если вы даете вашему последнему входу класс last, просто измените ваш код на что-то вроде

$('input').keydown(function(event) {
            if(!$(this).hasClass("last")){
                if(event.which == 13) {
                    event.preventDefault();
                    $(this).nextAll('input:first').focus();
                }
            }
        });     
0 голосов
/ 08 мая 2013
// 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
...