Desabilitar o Enter em um form com Javascript

Recentemente, estive trabalhando em um sistema com cadastros, quando me deparei com um problema, o Enter.

Não podia Permitir que o usuário desse o action do form ao pressionar o enter, geralemente para mudar de campo.

Pesquisei na Internet, achei algumas opções, mas acabei criando a minha do jeito que eu realmente precisava. Cheguei ao script abaixo.


function arrumaEnter (field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
}
else
return true;
}

<input onkeypress="return arrumaEnter(this, event)" maxlength="60" name="emitente" type="text" />

Linha a linha

function arrumaEnter (field, event) { - Nome da funcção, que recebe o campo e o evento utilizado

var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; – Recebe o evento utilizado

if (keyCode == 13) { – Se a tecla é o Enter

var i; - Cria a variável

for (i = 0; i < field.form.elements.length; i++) – Roda todos os camposdo form

if (field == field.form.elements[i]) - Se o campo utilizado é o atual

break; Para

i = (i + 1) % field.form.elements.length; – Adiciona 1 ao campo atual

field.form.elements[i].focus(); – Dá um foco no próximo campo

return false; – Retorna Falso, ou seja, não permite o submit

else – Caso contrário

return true; – Permite o Submit

onkeypress=“return arrumaEnter(this, event)” – Chama a função

Veja

download




10 Comentários »

  1. Comentário por Helton Ritter — 07/05/2009 @ 7:59 pm

    obrigado, usei o script adaptando um pouquinho. Valeu ter postado.

  2. Comentário por Gilson Filho — 14/07/2009 @ 4:25 pm

    Muito bom seu script, parabens!!!!

  3. Comentário por Roger Mauricio — 06/11/2011 @ 7:52 am

    Cara vlw, sei que o post é antigo, só que realmente foi uma mão na roda para mim, estava tentando de várias maneiras, porém não tinha pensando ainda em tratar o event no campo, invez de ficar quebrando a cabeça no formulário.

    Thanks Bro

  4. Comentário por Leandro Fiel — 11/04/2012 @ 11:38 am

    Muito seu script. Procurei um tanto de coisas, testei outras soluções, mas só o seu resolveu. E em todos os browsers!!!
    Valeu!

  5. Comentário por Saulo — 25/05/2012 @ 10:38 pm

    Valeu pelo script. Estava me batendo com um leitor de código de barras que acabava dando submit antes de preencher outros campos, visto que por padrão ele envia um “enter” após a leitura.seu script resolveu meu problema.Abrass

  6. Comentário por wellington — 03/08/2012 @ 11:18 am

    VALEU MUITO PELO POST CARA, FOI MUITO UTIL…

  7. Comentário por marcio — 19/04/2013 @ 1:21 pm

    ótima função me ajudou muito!!!ha você deveria ter colocado neste formulário de envio de Comentários !!!!

  8. Comentário por Wilson Jacarandá — 30/06/2013 @ 3:58 pm

    Deus te abençoe pelo post!Funcionou beleza e me tirou de um tremendo sufoco. Muita luz, que vc merece!!!

  9. Comentário por Tamara — 22/09/2013 @ 10:27 pm

    Parabens. Isso me esquentou a cabeça e tive sorte de encontrar logo aqui no seu blog. Muito obrigado.

  10. Comentário por Luiz Martins — 25/10/2013 @ 2:36 pm

    Ola estou implementando isto em um MODAL e estou bloqueando a tleca ESC, deu certo mais ao clicar no campo input ele liberar o ESC teria como bloquear tbm, Grato.

Rss dos comentários TrackBack URL

Deixe um comentário