Examinei várias outras perguntas e encontrei respostas muito simples, incluindo o código abaixo. Eu simplesmente quero detectar quando alguém altera o conteúdo de uma caixa de texto, mas por algum motivo não está funcionando ... Não recebo erros no console. Quando defino um ponto de interrupção no navegador na change()
função, ele nunca o atinge.
$('#inputDatabaseName').change(function () {
alert('test');
});
<input id="inputDatabaseName">
Respostas:
Você pode usar o
input
evento Javascript no jQuery assim:Em JavaScript puro:
Ou assim:
fonte
tente digitar em vez de alterar.
Aqui está a documentação oficial do jQuery para .keyup () .
fonte
Cada resposta está faltando alguns pontos, então aqui está a minha solução:
Os
Input Event
disparos na entrada do teclado , arrastar o mouse , preencher automaticamente e copiar e colar foram testados no Chrome e Firefox. A verificação do valor anterior faz com que ele detecte alterações reais, o que significa não disparar ao colar a mesma coisa ou digitar o mesmo caractere ou etc.Exemplo de trabalho: http://jsfiddle.net/g6pcp/473/
atualizar:
E se você deseja executar o seu
change function
somente quando o usuário terminar de digitar e impedir o acionamento da ação de alteração várias vezes, tente o seguinte:Se o usuário começa a digitar (por exemplo, "foobar"), esse código impede que você
change action
execute todas as letras que o usuário digita e só é executado quando o usuário para de digitar. Isso é bom especialmente para quando você envia a entrada para o servidor (por exemplo, entradas de pesquisa), que servidor de maneira faz apenas uma busca parafoobar
e não seis pesquisas paraf
e depoisfo
e depoisfoo
efoob
e assim por diante.fonte
$("#input").focusout(function () {})
. Quando você clica fora da sua entrada, o evento é acionado. Funciona na versão atual do Chrome e Firefox e IE9$("#input").on("input focusout",function(e){
As entradas de texto não disparam o
change
evento até que elas percam o foco. Clique fora da entrada e o alerta será exibido.Se o retorno de chamada for acionado antes que a entrada de texto perca o foco, use o
.keyup()
eventofonte
change
está trabalhando aqui: jsfiddle.net/g6pcp ;keyup
alerta após cada tecla que não é uma boa maneiraalert()
. Isso tornará a depuração muito mais fácil.onkeyup, onpaste, onchange, oninput
parece estar falhando quando o navegador executa o preenchimento automático nas caixas de texto. Para lidar com esse caso, inclua "autocomplete='off'
" em seu campo de texto para impedir que o navegador preencha automaticamente a caixa de texto,Por exemplo,
fonte
No meu caso, eu tinha uma caixa de texto anexada a um datepicker. A única solução que funcionou para mim foi lidar com isso dentro do evento onSelect do datepicker.
fonte
Eu acho que você pode usar
keydown
também:fonte
TRABALHANDO:
fonte