if(characterCode == 13)
{
return false; // returning false will prevent the event from bubbling up.
}
else
{
return true;
}
Ok, imagine que você tenha a seguinte caixa de texto em um formulário:
<input id="scriptBox" type="text" onkeypress="return runScript(event)" />
Para executar algum script "definido pelo usuário" nessa caixa de texto quando a tecla Enter for pressionada e não enviar o formulário, aqui está um código de exemplo . Observe que essa função não realiza nenhuma verificação de erro e provavelmente só funcionará no IE. Para fazer isso corretamente, você precisa de uma solução mais robusta, mas terá a ideia geral.
function runScript(e) {
//See notes about 'which' and 'key'
if (e.keyCode == 13) {
var tb = document.getElementById("scriptBox");
eval(tb.value);
return false;
}
}
o retorno do valor da função alertará o manipulador de eventos para não interromper o evento e evitará que o evento de pressionamento de tecla seja tratado ainda mais.
NOTA:
Foi apontado que agorakeyCode
está obsoleto . A próxima melhor alternativa which
tem também foi preterido .
Infelizmente, o padrão preferido key
, que é amplamente suportado por navegadores modernos, tem algum comportamento desonesto no IE e no Edge . Qualquer coisa mais antiga que o IE11 ainda precisaria de um polyfill .
Além disso, enquanto o aviso deprecated é bastante sinistra sobre keyCode
e which
, retirando aqueles que representaria uma alteração de quebra enorme para um número incontável de sites legados. Por esse motivo, é improvável que eles cheguem a algum lugar em breve.
eval
o conteúdo pressionando um botão não é diferente do que se eles abrissem as ferramentas do desenvolvedor e o fizessem. Se isso fosse algo que estava sendo salvo no banco de dados e pudesse ser aberto por outro usuário, seria um grande problema, mas esse é um problema que é completamente independente desse pequeno trecho.keyCode
agora está obsoletoUse ambos
event.which
eevent.keyCode
:fonte
which
outroskeyCode
. É uma boa prática incluir ambos.keydown
evento em vez dekeyup
oukeypress
Se você estiver usando jQuery:
fonte
preventDefault
parece não parar o envio do formulário, pelo menos no Chrome.$('input[type=text]').on('keydown', function(e) { if (e.which == 13) { e.preventDefault(); } });
'keydown'
está correto como os outros comentadores estão afirmando. Como não foi alterado, atualizarei a resposta. Eu usei essa resposta e fiquei preso por um tempo até voltar e olhar os comentários.event.key === "Enter"
Mais recente e muito mais limpo: use
event.key
. Chega de códigos numéricos arbitrários!Documentos do Mozilla
Navegadores suportados
fonte
keyCode
está obsoleto. Esta é mais legível e de fácil manutenção do que um inteiro magia em seu códigoDetectar a tecla Enter pressionada em todo o documento:
http://jsfiddle.net/umerqureshi/dcjsa08n/3/
fonte
Substitua a
onsubmit
ação do formulário para ser uma chamada para sua função e adicione return false depois dela, ou seja:fonte
Uma solução react js
fonte
Portanto, talvez a melhor solução para cobrir o maior número possível de navegadores e estar à prova do futuro seja
fonte
se você quiser fazê-lo usando puramente script java, aqui está um exemplo que funciona perfeitamente
Digamos que este é o seu arquivo html
no seu arquivo popup.js, basta usar esta função
fonte
O código abaixo adicionará o ouvinte para a
ENTER
chave na página inteira.Isso pode ser muito útil em telas com um único botão de ação, por exemplo, login, registro, envio etc.
Testado em todos os navegadores.
fonte
Uma solução jQuery.
Eu vim aqui procurando uma maneira de atrasar o envio do formulário até que o evento de desfoque na entrada de texto tenha sido disparado.
Seria bom obter uma versão mais geral que disparasse todos os eventos atrasados, e não apenas o envio do formulário.
fonte
Uma maneira muito mais simples e eficaz da minha perspectiva deve ser:
fonte
Usando TypeScript, e evite chamadas múltiplas na função
fonte
Um pouco simples
Não envie o formulário pressionando a tecla "Enter":
Execute a função pressionando a tecla "Enter":
fonte
js nativo (buscar api)
fonte
Adicione este código na sua página HTML ... ele será desativado ... Botão Enter ..
fonte
fonte
Solução entre navegadores
Alguns navegadores mais antigos implementaram eventos de pressionamento de tecla de maneira não padrão.
which
ekeyCode
estão obsoletas hoje em dia, mas não custa verificar esses eventos para que o código funcione para usuários que ainda usam navegadores mais antigos como o IE.A
isKeyPressed
função verifica se a tecla pressionada foi inserida eevent.preventDefault()
impede o envio do formulário.Exemplo de trabalho mínimo
JS
HTML
https://jsfiddle.net/tobiobeck/z13dh5r2/
fonte