Eu tenho um formulário de login padrão - um campo de texto de email, um campo de senha e um botão de envio em um projeto do AIR que usa HTML / jQuery. Quando pressiono Enter no formulário, o conteúdo inteiro desaparece, mas o formulário não é enviado. Alguém sabe se esse é um problema do Webkit (o Adobe AIR usa o Webkit para HTML) ou se eu estraguei tudo?
Eu tentei:
$('.input').keypress(function (e) {
if (e.which == 13) {
$('form#login').submit();
}
});
Mas isso não interrompeu o comportamento de limpeza ou enviou o formulário. Não há nenhuma ação associada ao formulário - esse poderia ser o problema? Posso colocar uma função javascript na ação?
Respostas:
Verifique esta resposta do stackoverflow: event.preventDefault () vs. return false
Essencialmente, "retornar falso" é o mesmo que chamar
e.preventDefault
ee.stopPropagation()
.fonte
Além de retornar false, como Jason Cohen mencionou. Pode ser necessário também impedir o padrão
fonte
return false
em um evento gerido por jQuery automaticamente chamar e.preventDefault ()Não sei se isso ajudará, mas você pode tentar simular um clique no botão enviar, em vez de enviar diretamente o formulário. Eu tenho o seguinte código em produção e funciona bem:
Nota: jQuery ('# submit'). Focus () anima o botão quando pressionar enter.
fonte
Retorne
false
para impedir que o pressionamento de tecla continue.fonte
Existe algum motivo para você conectar e testar a tecla Enter?
Você não poderia simplesmente adicionar um
ao seu formulário e ele deve ser enviado naturalmente quando a tecla enter for pressionada? Você ainda pode ligar a
onsubmit
ação do formulário e chamar uma função de validação a partir daí, se quiser ...Você pode até usar o
onsubmit
como um teste para ver se seu formulário está sendo enviado, mas não funcionará se você ligarform.submit()
.fonte
return false;
coisa toda .Aqui está uma maneira de fazer isso como um plugin JQuery (caso você queira reutilizar a funcionalidade):
Agora, se você deseja decorar um
<input>
elemento com esse tipo de funcionalidade, é simples assim:fonte
Você também pode simplesmente adicionar
onsubmit="return false"
o código do formulário na página para impedir o comportamento padrão.Em seguida, conecte (
.bind
ou.live
) o formuláriosubmit
evento a qualquer função com jQuery no arquivo javascript.Aqui está um código de exemplo para ajudar:
HTML
Javascript + jQuery
Isso funciona desde 13/04/2011, com o Firefox 4.0 e o jQuery 1.4.3
fonte
Este é o meu código:
fonte
Também para manter a acessibilidade, você deve usar isso para determinar seu código de chave:
fonte
Apenas adicionando para fácil implementação. Você pode simplesmente criar um formulário e ocultar o botão enviar:
Por exemplo:
fonte
Eu uso agora
Inicialmente, adicionei um manipulador de eventos ao botão de envio que produziu um erro para mim.
fonte
Descobri hoje que o evento de pressionamento de tecla não é acionado ao pressionar a tecla Enter; portanto, convém alternar para keydown () ou keyup ().
Meu script de teste:
A saída no console ao digitar "A Enter B" no teclado:
Você vê na segunda sequência o 'pressionamento de tecla' está ausente, mas o código de registro de teclas e de teclas '13' foi pressionado / liberado. Conforme a documentação do jQuery na função keypress () :
Testado no IE11 e FF61 no Server 2012 R2
fonte
Nos códigos HTML:
Nos códigos Js:
fonte
Tente o seguinte:
fonte