2012-02-09 17 views
5

Próbuję przechwycić, gdy wartość pola wprowadzania tekstu zostanie zmieniona. Używam:Zmiana pola wejściowego jquery, nawet po zmianie wartości za pomocą jquery

$("input[name=color]").change(function(){ 

Działa to, jeśli bezpośrednio wpiszę nową wartość. Jednak wartość pola wejściowego jest zmieniana przez jquery. Jest kilka takich pól i muszę się dowiedzieć, kiedy coś się zmieniło. Czy istnieje sposób na wykrycie tej zmiany?

Przepraszam, nie byłem jasny. Nie jestem tym, który zmienia wartość. Jest to dodatek, którego nie chciałbym modyfikować w razie potrzeby przeniesienia go do innego projektu.

obejście

Ok, więc nie można zrobić to, co chciałem zrobić, ale tutaj jest to obejście. Właśnie zrobiłem przerwę i zmieniłem wydarzenie na wydarzenie each.

setInterval(function(){ 
    $("input[name=color]").each(function(){ my code }) 
},100); 
+0

jak ty zmieniając go z jQuery. Mam na myśli kod, który to robi. Nie możesz po prostu zrobić czegoś w tym samym czasie, kiedy kod to zmienia? – Henesnarfel

+0

Chciałbym móc, ale jest to wtyczka kolorystyczna, która zmienia wartości. Chcę tylko stosować wartości, które się zmieniają. – James

+0

to obejście działa, nie masz pewności, czy rzeczywiście zwiększy to czas ładowania strony? – redcoder

Odpowiedz

11

Nie ma sposobu, aby wykryć zmiany wykonane programowo.

Można jednak wyzwolić zdarzenie change po zmodyfikowaniu jego wartości.

$("input[name=color]").val("newValue").change(); 
+1

Zamierzam oznaczyć to jako poprawne, ponieważ odpowiada na pytanie. Ale jeśli jesteś zainteresowany, również umieszczam mój kod w moim kodzie. – James

2

Kiedy zmienić wartość o jQuery można ognia zdarzenie change jQuery potem

$("input[name=color]").val('someValue').trigger('change'); 
+0

Dzięki, ale nie kontrolowałem innych jquery. Jednak znalazłem obejście. – James

1

Nie, onchange zdarzenie nie zostanie uruchomiony, gdy wartość jest zmieniana przy użyciu javascript. Alternatywnie możesz wywołać zdarzenie onchange po zmianie wartości.

+0

Dzięki, ale nie kontrolowałem innych jquery. Jednak znalazłem obejście. – James

0

Jedną z opcji jest, aby śledzić wartość poza zakresem swojego słuchacza

function foo() { 
    var value = null; 
    $("select#thingy").on("change", function (e) { 
    let p = $(this).children("#choose-me").val(); 
    value = value === p ? null : p; 
    $(this).val(value); 
    }); 
} 

$(function() { 
    foo(); 
}) 
Powiązane problemy