J'ai regardé de nombreuses autres questions et trouvé des réponses très simples, y compris le code ci-dessous. Je veux simplement détecter quand quelqu'un modifie le contenu d'une zone de texte, mais pour une raison quelconque, cela ne fonctionne pas ... Je n'ai aucune erreur de console. Lorsque je définis un point d'arrêt dans le navigateur à la change()
fonction, il ne le frappe jamais.
$('#inputDatabaseName').change(function () {
alert('test');
});
<input id="inputDatabaseName">
Réponses:
Vous pouvez utiliser l'
input
événement Javascript dans jQuery comme ceci:En pur JavaScript:
Ou comme ça:
la source
essayez la saisie au lieu de changer.
Voici la documentation jQuery officielle pour .keyup () .
la source
Il manque quelques points à chaque réponse, alors voici ma solution:
Les
Input Event
incendies sur l' entrée clavier , la souris glisser , le remplissage automatique et le copier-coller testés sur Chrome et Firefox. La vérification de la valeur précédente permet de détecter de vrais changements, ce qui signifie ne pas tirer en collant la même chose ou en tapant le même caractère ou etc.Exemple de travail: http://jsfiddle.net/g6pcp/473/
mettre à jour:
Et si vous souhaitez exécuter votre
change function
uniquement lorsque l'utilisateur a fini de taper et éviter de déclencher l'action de modification plusieurs fois, vous pouvez essayer ceci:Si l'utilisateur commence à taper (par exemple "foobar"), ce code vous empêche
change action
d'exécuter pour chaque type d'utilisateur de lettre et ne s'exécute que lorsque l'utilisateur arrête de taper. serveur manière ne une seule recherchefoobar
et non six recherches pourf
et puisfo
et puisfoo
etfoob
et ainsi de suite.la source
$("#input").focusout(function () {})
. Lorsque vous cliquez en dehors de votre entrée, l'événement est déclenché. Fonctionne sur la version actuelle de Chrome et Firefox, et IE9$("#input").on("input focusout",function(e){
Les entrées de texte ne déclenchent pas l'
change
événement tant qu'elles ne perdent pas le focus. Cliquez en dehors de l'entrée et l'alerte s'affichera.Si le rappel doit se déclencher avant que la saisie de texte ne perde le focus, utilisez l'
.keyup()
événement.la source
change
travaille ici: jsfiddle.net/g6pcp ;keyup
alerte après chaque touche, ce qui n'est pas un bon moyenalert()
. Cela rendra le débogage beaucoup plus facile.onkeyup, onpaste, onchange, oninput
semble échouer lorsque le navigateur effectue le remplissage automatique sur les zones de texte. Pour gérer un tel cas, incluez "autocomplete='off'
" dans votre champ de texte pour empêcher le navigateur de remplir automatiquement la zone de texte,Par exemple,
la source
Dans mon cas, j'avais une zone de texte attachée à un sélecteur de date. La seule solution qui a fonctionné pour moi était de le gérer à l'intérieur de l'événement onSelect du sélecteur de date.
la source
Je pense que vous pouvez
keydown
aussi utiliser :la source
TRAVAIL:
la source