Mam ukryte pole tekstowe, którego wartość jest aktualizowana za pomocą odpowiedzi AJAX.
<input type="hidden" value="" name="userid" id="useid" />
Gdy ta wartość się zmienia, chciałbym uruchomić żądanie AJAX. Czy ktoś może doradzić, jak wykryć zmianę?
Mam następujący kod, ale nie wiem, jak szukać wartości:
$('#userid').change( function() {
alert('Change!');
})
Odpowiedzi:
Jest już późno, ale znalazłem odpowiedź, na wypadek, gdyby przydała się każdemu, kto natknie się na ten wątek.
Zmiany wartości ukrytych elementów nie powodują automatycznego uruchomienia zdarzenia .change (). Tak więc, gdziekolwiek ustawiasz tę wartość, musisz także powiedzieć jQuery, aby ją wyzwoliła.
Kiedy już tak jest,
powinien działać zgodnie z oczekiwaniami.
źródło
.trigger()
ogół lepiej jest korzystać z samego połączeniachange()
?change
zdarzenie, należy dodać kod,setUserID()
aby sprawdzić, czy wartość naprawdę się zmienia, czy nie.if ($('#userid').val() != myVaule) { // set val() and trigger change }
Ponieważ ukryte dane wejściowe nie wyzwalają zdarzenia „zmiana” przy zmianie, zamiast tego użyłem MutationObserver.
(Czasami ukrytych zmian wartości wejściowych dokonują niektóre skrypty, których nie można modyfikować)
To nie działa w IE10 i niższych wersjach
źródło
input[type=hidden]
trigger('change')
nie działało to dla mnie, więc utworzyłem CustomEvent, zarejestrowałem go, a następnieelement.dispatchEvent(myCustomEvent)
Możesz po prostu użyć poniższej funkcji, możesz także zmienić element typu.
Zmiany wartości ukrytych elementów nie powodują automatycznego uruchomienia zdarzenia .change (). Tak więc, gdziekolwiek ustawiasz tę wartość, musisz także powiedzieć jQuery, aby ją wyzwoliła.
HTML
JAVASCRIPT
powinien działać zgodnie z oczekiwaniami.
http://jsfiddle.net/7CM6k/3/
źródło
źródło
Można go użyć
Object.defineProperty()
w celu ponownego zdefiniowania właściwości „value” elementu wejściowego i wykonania dowolnej czynności podczas jego zmiany.Object.defineProperty()
pozwala nam zdefiniować obiekt pobierający i ustawiający właściwość, a tym samym sterować nią.https://jsfiddle.net/bvvmhvfk/
źródło
Ten przykład zwraca wartość pola szkicu za każdym razem, gdy ukryte pole szkicu zmienia swoją wartość (przeglądarka chrome):
źródło
Opierając się na odpowiedzi Viktara , oto implementacja, którą możesz wywołać raz na danym ukrytym elemencie wejściowym, aby upewnić się, że zdarzenie kolejnej zmiany zostanie uruchomione za każdym razem, gdy zmieni się wartość elementu wejściowego:
Nazwij to gotowym dokumentem w następujący sposób:
źródło
Chociaż ten wątek ma 3 lata, oto moje rozwiązanie:
źródło