Existe algum evento no Jquery que é acionado apenas se o usuário pressionar o botão Enter em uma caixa de texto? Ou qualquer plugin que possa ser adicionado para incluir isso? Caso contrário, como eu escreveria um plugin rápido que faria isso?
javascript
jquery
jquery-events
Click Voto a favor
fonte
fonte
e.keyCode
para algumas chaves, melhor usare.which
, isso garantirá que você manipulará o mesmo botão em todos os navegadoresfonte
Aqui está um plugin para você: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/ )
fonte
$
variável para o plug-in não é uma boa ideia, pois pode causar conflitos.$("#myInput").bind('click, onEnter', myCallback);
e funcionaria sem precisar de mais nada?aqui está um plugin jquery para fazer isso
Para usá-lo, inclua o código e configure-o assim:
jsfiddle aqui http://jsfiddle.net/VrwgP/30/
fonte
func.apply(this)
, dessa forma, dentro da função de retorno de chamada que você pode usarthis
normalmente para acessar o elemento no qual o evento foi acionado.e.preventDefault(); e.stopPropagation();
dentro doif (e.keyCode)
bit.Deve-se notar que o uso
live()
no jQuery foi descontinuado desde a versão1.7
e foi removido no jQuery1.9
. Em vez disso, o uso deon()
é recomendado.Eu sugeriria altamente a seguinte metodologia para ligação, pois resolve os seguintes desafios em potencial:
document.body
e passar o seletor $ como o segundo argumento paraon()
, os elementos podem ser anexados, desanexados, adicionados ou removidos do DOM sem precisar lidar com eventos de ligação ou ligação dupla. Isso ocorre porque o evento é anexado aodocument.body
invés de$selector
diretamente, o que significa que$selector
pode ser adicionado, removido e adicionado novamente e nunca carregará o evento associado a ele.off()
anteson()
, esse script pode residir no corpo principal da página ou no corpo de uma chamada AJAX, sem ter que se preocupar com eventos de ligação dupla acidental.$(function() {...})
, ele pode ser carregado novamente pelo corpo principal da página ou pelo corpo de uma chamada AJAX.$(document).ready()
não é acionado por solicitações AJAX, enquanto o$(function() {...})
é.Aqui está um exemplo:
fonte
Se sua entrada for
search
, você também pode usaron 'search'
event. Exemplo.
fonte
Código HTML:-
Código de script Java
Seu formulário não possui o botão Enviar padrão
fonte
Outra variação sutil. Fui para uma ligeira separação de poderes, por isso tenho um plug-in para permitir a captura da tecla enter, depois vinculo-me aos eventos normalmente:
E então em uso:
Essa variação permite usar a delegação de eventos (para vincular a elementos que você ainda não criou).
fonte
Não consegui
keypress
disparar o evento para o botão enter e coçou a cabeça por algum tempo até ler os documentos do jQuery:" O evento de pressionamento de tecla é enviado a um elemento quando o navegador registra a entrada do teclado. Isso é semelhante ao evento de pressionamento de tecla, exceto que as teclas modificadoras e que não imprimem, como Shift, Esc e excluem eventos de pressionamento de tecla, mas não os eventos de pressionamento de tecla. " ( https://api.jquery.com/keypress/ )
Eu tive que usar o evento
keyup
oukeydown
para pressionar o botão Enter.fonte