J'ai un champ de texte caché dont la valeur est mise à jour via une réponse AJAX.
<input type="hidden" value="" name="userid" id="useid" />
Lorsque cette valeur change, je voudrais déclencher une demande AJAX. Quelqu'un peut-il nous conseiller sur la façon de détecter le changement?
J'ai le code suivant, mais je ne sais pas comment rechercher la valeur:
$('#userid').change( function() {
alert('Change!');
})
Réponses:
C'est donc beaucoup trop tard, mais j'ai découvert une réponse, au cas où cela deviendrait utile à quiconque rencontre ce fil.
Les changements de valeur en éléments cachés ne déclenchent pas automatiquement l'événement .change (). Donc, où que vous définissiez cette valeur, vous devez également dire à jQuery de la déclencher.
Une fois que c'est le cas,
devrait fonctionner comme prévu.
la source
.trigger()
généralement préférable d'utiliser plutôt que d'appelerchange()
?change
événement, vous devez ajouter le codesetUserID()
pour vérifier si la valeur est vraiment modifiée ou non.if ($('#userid').val() != myVaule) { // set val() and trigger change }
Étant donné que l'entrée masquée ne déclenche pas d'événement «changement» lors d'un changement, j'ai utilisé MutationObserver pour déclencher cela à la place.
(Parfois, les changements de valeur d'entrée cachés sont effectués par d'autres scripts que vous ne pouvez pas modifier)
Cela ne fonctionne pas dans IE10 et ci-dessous
la source
input[type=hidden]
trigger('change')
n'a pas fonctionné pour moi, j'ai donc créé un événement personnalisé, l'ai enregistré, puiselement.dispatchEvent(myCustomEvent)
Vous pouvez simplement utiliser la fonction ci-dessous, vous pouvez également changer l'élément type.
Les changements de valeur en éléments cachés ne déclenchent pas automatiquement l'événement .change (). Donc, où que vous définissiez cette valeur, vous devez également dire à jQuery de la déclencher.
HTML
JAVASCRIPT
devrait fonctionner comme prévu.
http://jsfiddle.net/7CM6k/3/
la source
la source
Il est possible de l'utiliser
Object.defineProperty()
pour redéfinir la propriété 'value' de l'élément d'entrée et faire n'importe quoi lors de son changement.Object.defineProperty()
nous permet de définir un getter et un setter pour une propriété, donc de la contrôler.https://jsfiddle.net/bvvmhvfk/
la source
Cet exemple renvoie la valeur du champ brouillon à chaque fois que le champ brouillon masqué change de valeur (navigateur Chrome):
la source
À partir de la réponse de Viktar , voici une implémentation que vous pouvez appeler une fois sur un élément d'entrée caché donné pour vous assurer que l'événement de changement suivant est déclenché chaque fois que la valeur de l'élément d'entrée change:
Appelez cela sur un document prêt comme ceci:
la source
Bien que ce fil ait 3 ans, voici ma solution:
la source