Ich habe ein verstecktes Textfeld, dessen Wert über eine AJAX-Antwort aktualisiert wird.
<input type="hidden" value="" name="userid" id="useid" />
Wenn sich dieser Wert ändert, möchte ich eine AJAX-Anfrage auslösen. Kann jemand raten, wie man die Änderung erkennt?
Ich habe den folgenden Code, weiß aber nicht, wie ich nach dem Wert suchen soll:
$('#userid').change( function() {
alert('Change!');
})
Antworten:
Das ist also viel spät, aber ich habe eine Antwort gefunden, falls sie für jemanden nützlich sein sollte, der auf diesen Thread stößt.
Wertänderungen an ausgeblendeten Elementen lösen das Ereignis .change () nicht automatisch aus. Wo immer Sie diesen Wert festlegen, müssen Sie jQuery auch anweisen, ihn auszulösen.
Sobald dies der Fall ist,
sollte wie erwartet funktionieren.
quelle
.trigger()
Allgemeinen besser, nur zu telefonierenchange()
?change
Ereignis verhält , sollten Sie den Code hinzufügensetUserID()
, um zu überprüfen, ob sich der Wert wirklich ändert oder nicht.if ($('#userid').val() != myVaule) { // set val() and trigger change }
Da versteckte Eingaben bei Änderungen kein "Änderungs" -Ereignis auslösen, habe ich stattdessen MutationObserver verwendet, um dies auszulösen.
(Manchmal werden versteckte Eingabewertänderungen von anderen Skripten vorgenommen, die Sie nicht ändern können.)
Dies funktioniert nicht in IE10 und darunter
quelle
input[type=hidden]
trigger('change')
bei mir nicht funktioniert, also habe ich ein CustomEvent erstellt, es registriert und dannelement.dispatchEvent(myCustomEvent)
Sie können einfach die folgende Funktion verwenden. Sie können auch das Typelement ändern.
Wertänderungen an ausgeblendeten Elementen lösen das Ereignis .change () nicht automatisch aus. Wo immer Sie diesen Wert festlegen, müssen Sie jQuery auch anweisen, ihn auszulösen.
HTML
JAVASCRIPT
sollte wie erwartet funktionieren.
http://jsfiddle.net/7CM6k/3/
quelle
quelle
Es ist möglich, die
Object.defineProperty()
Eigenschaft 'value' des Eingabeelements neu zu definieren und während seiner Änderung alles zu tun.Object.defineProperty()
ermöglicht es uns, einen Getter und Setter für eine Eigenschaft zu definieren und diese so zu steuern.https://jsfiddle.net/bvvmhvfk/
quelle
In diesem Beispiel wird der Wert des Entwurfsfelds jedes Mal zurückgegeben, wenn das ausgeblendete Entwurfsfeld seinen Wert ändert (Chrome-Browser):
quelle
Aufbauend auf der Antwort von Viktar können Sie eine Implementierung eines bestimmten versteckten Eingabeelements einmal aufrufen, um sicherzustellen, dass nachfolgende Änderungsereignisse ausgelöst werden, wenn sich der Wert des Eingabeelements ändert:
Nennen Sie dies auf Dokument fertig wie folgt:
quelle
Obwohl dieser Thread 3 Jahre alt ist, ist hier meine Lösung:
quelle