Utilizar <ENTER> para mudar de campo

1,714 views
Skip to first unread message

Fabio Reis

unread,
Aug 21, 2009, 10:40:20 AM8/21/09
to jque...@googlegroups.com
Pessoal,

Como posso fazer para o enter só enviar formulario se estiver com o foco no botao de submit?
E como posso fazer com que o enter possa mudar de campo em <input>?

Valeu

--
Fábio Reis Araujo

Paulo Diovani

unread,
Aug 21, 2009, 12:31:09 PM8/21/09
to jque...@googlegroups.com
Cara, na boa, isso foge de qualquer padrão web. Tecla Enter submete o
formulário se pressionada em um campo, sempre foi assim, essa história
de Enter trocar de campo só existia em programinhas em cliper e cobol
de eras atrás. É mais fácil seus clientes se acostumarem a usar a
tecla Tab do que você fazer uma série de gambiarras para remover estas
funcionalidade.

Se seu cliente for teimoso, e se acostumar com uma outra opção não for
viável, você pode cancelar o form submit. Acho que basta verificar se
a tecla pressionada é o 'Enter', e dar um return false, então você
poderia dar foco para o próximo campo. Se não funcionar, talvez você
tenha que colocar a verificação no evento submit do form, e verificar
onde está o foco atualmente (se não for no botão submit, cancela).

2009/8/21 Fabio Reis <fabiore...@gmail.com>:
--
Paulo Diovani
pa...@diovani.com
+55 51 8146 5413
___________________
http://www.diovani.com

Ruan Carlos

unread,
Aug 21, 2009, 12:57:50 PM8/21/09
to jque...@googlegroups.com
Existe vários plugins para isso (não me recordo o nome, nada que uma simples busca no google não lhe traga o resultado).


mais é só verificar o event.presskey (algo assim), se for igual ao valor do enter da focus() no próximo campo.

2009/8/21 Paulo Diovani <pa...@diovani.com>



--
-----------------------------------------------------------------
Ruan Carlos
@ruanltbg
www.ruancarlos.com.br
Desenvolvedor web

Marcelo Andrade

unread,
Aug 21, 2009, 3:14:16 PM8/21/09
to jque...@googlegroups.com
>> 2009/8/21 Fabio Reis <fabiore...@gmail.com>:
>> > Pessoal,
>> >
>> > Como posso fazer para o enter só enviar formulario se estiver com o foco
>> > no
>> > botao de submit?
>> > E como posso fazer com que o enter possa mudar de campo em <input>?

2009/8/21 Ruan Carlos <ruan...@gmail.com>:


> Existe vários plugins para isso (não me recordo o nome, nada que uma simples
> busca no google não lhe traga o resultado).

Se não me engano, o plugin AutoTab faz isso. Mas só vendo.

De qualquer jeito, também não é difícil implementar direto com
jQuery, não.

Atenciosamente.

--
MARCELO DE F. ANDRADE
Belem, PA, Amazonia, Brazil
Linux User #221105

http://mfandrade.wordpress.com

Alex Batista

unread,
Aug 21, 2009, 4:14:55 PM8/21/09
to jque...@googlegroups.com
Eu e meu colega de trabalho Guilherme, testamos isso aqui.
 

function alex {
var code = e.keyCode | e.charCode;
if(code == 13)
{
alert(code);
e.preventDefault();
}
}

document.testForm.onkeypress = alex;

hehe

function alex ( e )

Isso resolve teu problema.

Fabio Reis

unread,
Aug 21, 2009, 5:03:52 PM8/21/09
to jque...@googlegroups.com
o problem é pq o sistema será usado num coletor onde o tab não é muito acessivel.
Tem que apertar a tecla "Função", segurar e depois usar o tab

esse é o motivo da ideia de usar o ENTER

2009/8/21 Paulo Diovani <pa...@diovani.com>



--
Fábio Reis Araujo

Fabio Reis

unread,
Aug 21, 2009, 5:38:25 PM8/21/09
to jque...@googlegroups.com
Eu uso o autotab para pular os campos, mas o problema está em que o usuário nao necessitaria usar todos os dígitos e por isso pensei em usar o ENTER

Voce teria uma idéia de como fazer isso em jquery?
eu ja consegui fazer mudar de campo, mas o form é enviado

2009/8/21 Marcelo Andrade <mfan...@gmail.com>



--
Fábio Reis Araujo

Fabio Reis

unread,
Aug 21, 2009, 5:45:42 PM8/21/09
to jque...@googlegroups.com
RESOLVIDO

$('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 + 1].focus(); //  handles submit buttons
                        inputs[idx + 1].select();
                    }
                    return false;
                }
            });


2009/8/21 Ruan Carlos <ruan...@gmail.com>



--
Fábio Reis Araujo

Fabio Reis

unread,
Aug 21, 2009, 5:46:11 PM8/21/09
to jque...@googlegroups.com
valeu cara!!

2009/8/21 Alex Batista <alexis...@gmail.com>



--
Fábio Reis Araujo

Paulo Diovani

unread,
Aug 22, 2009, 3:03:38 PM8/22/09
to jque...@googlegroups.com
Fabio, conversando com um colega ontem descobri uma forma básica de
não enviar os campos com o 'Enter'.

Segundo ele (ainda não testei a técnica) basta não colocar um <input
type="submit"> no form, assim a tecla 'Enter' não fará nada se
pressionada dentro de algum outro input (desde que o form tenha mais
de um campo).

Para substituir o submit basta adicionar em seu lugar um botão comum
(type="button") e colocar um js 'submit()' no seu evento onClick.

2009/8/21 Fabio Reis <fabiore...@gmail.com>:

Fabio Reis

unread,
Aug 24, 2009, 11:14:32 AM8/24/09
to jque...@googlegroups.com
boa idéia.... valeu!

2009/8/22 Paulo Diovani <pa...@diovani.com>



--
Fábio Reis Araujo

Alex Batista

unread,
Aug 24, 2009, 12:25:00 PM8/24/09
to jque...@googlegroups.com
A coisa ruim é que fica dependendo do JS. :s

Stephan A. de Souza

unread,
Aug 24, 2009, 1:02:07 PM8/24/09
to jque...@googlegroups.com
Nops, o formulário não pode ter o atributo submit... Que pode ser injetado ao clicar um botão anexando um this.form.submit();

2009/8/22 Paulo Diovani <pa...@diovani.com>



--
Programador PHP Ação Direta : www.acaodireta.com.br | p...@acaodireta.com.br
www.twitter.com/bladed
Administrador HxBr.net
Forum/TeamSpeak Admin ragnaBR.net

José Henrique

unread,
Aug 24, 2009, 1:09:59 PM8/24/09
to jque...@googlegroups.com
Exatamente. Caso a pessoa tenha desabilitado o javascript, a página
não funcionará. É considerado boa prática desenvolver sua página para
que funcione em ambos os casos. Até porque quem está acessando pode
utilizar uma versão antiga ou mesmo um browser que não é suportado
pelo jquery.

O melhor é inspecionar qual objeto gerou o evento (event.target) e
submeter o formulário ou interromper a submissão.

José Henrique.

2009/8/24 Alex Batista <alexis...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages