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
精彩评论