Comment puis-je mettre en œuvre onchange de <input type=“texte”> avec jQuery?
<select>
a cette API. Qu'en est <input>
?
Vous devez vous connecter pour publier un commentaire.
<select>
a cette API. Qu'en est <input>
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
.modifier()
Cependant, cet événement se déclenche uniquement lorsque le sélecteur a perdu le focus, de sorte que vous aurez besoin de cliquer quelque part d'autre d'avoir ce travail.
Si ce n'est pas tout à fait bon pour vous, vous pouvez utiliser certains des autres jQuery événements comme keyup, keydown ou keypress - en fonction de l'effet souhaité.
change
se déclenche uniquement lorsque l'élément d'entrée a perdu le focus. Il y a aussi leinput
événement qui déclenche à chaque fois que la zone de texte mises à jour sans avoir à perdre le focus. À la différence des principaux événements il travaille également pour le collage/faites glisser le texte.change
n'est pas pris en charge par IE9, vous pouvez utiliserfocusout
d'avoir le même comportementComme @pimvdb dit dans son commentaire,
(Voir la documentation.)
C'est si utile, il vaut la peine de le mettre dans une réponse. A l'heure actuelle (v1.8*?) il n'est pas .input() commodité fn en jquery, donc la façon de le faire est
$('form').on('change input', function);
a fait le tour pour moi. Merci.Je vous suggérons d'utiliser l'événement keyup quelque chose comme ci-dessous:
Il existe quelques façons d'atteindre le même résultat, donc je suppose que c'est à la préférence et dépend de la façon dont vous voulez qu'il fonctionne exactement.
Mise à jour: Cela ne fonctionne que pour la saisie manuelle pas de copier-coller.
Pour copier et coller je vous recommande les suivants:
Voici le code que j'utilise:
Cela fonctionne très bien, en particulier lorsque jumelé avec un
jqGrid
de contrôle. Vous pouvez simplement taper dans une zone de texte et immédiatement consulter les résultats dans votrejqGrid
.Il est un et un seul moyen fiable pour ce faire, et c'est en tirant la valeur dans l'intervalle et en la comparant à une valeur mise en cache.
La raison pour laquelle c'est le seul moyen est parce qu'il y a de multiples façons de modifier un champ de saisie à l'aide de diverses entrées (clavier, souris, coller, l'historique du navigateur, voiceinput etc.) et vous ne pouvez pas détecter tous d'entre eux à l'aide de la norme des événements dans un cross-browser environnement.
Heureusement, grâce à l'événement de l'infrastructure en jQuery, il est très facile d'ajouter votre propre inputchange événement. Je l'ai fait ici:
L'utiliser comme:
$('input').on('inputchange', function() { console.log(this.value) });
Il y a une démo ici: http://jsfiddle.net/LGAWY/
Si vous avez peur de multiples intervalles, vous pouvez lier/délier de cet événement sur
focus
/blur
.$('body').on('inputchange', 'input', function() { console.log(this.value) });
? Ou pas, comme indiqué ici: github.com/EightMedia/hammer.js/pull/98 ?Je recommande d'utiliser
this
mot-clé afin d'obtenir l'accès à l'ensemble de l'élément de sorte que votre sont en mesure de faire tout ce dont vous avez besoin avec cet élément.Ce qui suit fonctionnera même si elle est dynamique/appels Ajax.
Script:
Html,
J'espère que ce code de travail va aider quelqu'un qui est en train d'essayer d'accéder de façon dynamique/appels Ajax...
Vous pouvez simplement travailler avec l'id
Cela a fonctionné pour moi. Si le champ avec le nom fieldA est cliqué ou n'importe quelle touche entrée des mises à jour de champ avec l'id fieldB.
Vous pouvez utiliser
.keypress()
.Par exemple, considérons le code HTML:
Le gestionnaire d'événement peut être lié à la zone de saisie:
Je suis totalement d'accord avec Andy; tout dépend de comment vous voulez qu'il fonctionne.
Vous pouvez le faire de différentes façons, keyup est l'un d'entre eux. Mais je suis en donnant l'exemple ci-dessous avec le changement.
NB: input[name="vat_id"] remplacer avec votre entrée ID ou nom.