2011-02-08 4 views

Odpowiedz

7

Jednym z rozwiązań, z których korzystałem okazjonalnie, jest sprawdzenie, czy wartość pola/input/select różni się od wartości defaultValue. defaultValue byłaby wartością oryginalną w znaczniku, a wartość jest bieżącą wartością aka wybraną lub wprowadzoną wartością. Prawdopodobnie byłoby inaczej, nawet jeśli formularz został automatycznie wypełniony.

Jeśli chcesz całkowicie wyłączyć autouzupełnianie, może być rozsądnie dodać autouzupełnianie = "wyłączone" w polach, które są bezpośrednio połączone z Twoją logiką.

+0

Próbowałem również podobnego rozwiązania, ale Problem polega na tym, że ustawiłem tekst na "", a następnie autouzupełnianie przez chrome powoduje ponowne umieszczanie moich referencji ... – Revious

+0

Chrome teraz unieważnia autouzupełnianie i zdecydował, że lepszym UX jest po prostu autouzupełnianie wszystkiego: - \ – webdevinci

0

Czy próbowałeś używać zdarzenia onpropertyzowanego zamiast onchange? To tylko dla IE i jest zalecaną poprawką dla MSDN.

+0

Chciałbym, ale jako strona oglądane przez setki tysięcy ludzi na całym każdej możliwej przeglądarki, nie sądzę, że będzie działać bardzo dobrze. –

+0

To wygląda podobnie: http://stackoverflow.com/questions/343192/why-does-the-javascript-onchange-event-not-fire-if-autocomplete-is-on- – Satyajit

0

wszelki wypadek ktoś nadal szuka rozwiązania (tak jak byłem dzisiaj), aby posłuchać zmiany autouzupełniania w przeglądarce, oto niestandardowa metoda jQuery, którą zbudowałem, aby uprościć proces podczas dodawania odbiornika zmian do danych wejściowych:

$.fn.allchange = function (callback) { 
     var me = this; 
     var last = ""; 
     var infunc = function() { 
      var text = $(me).val(); 
      if (text != last) { 
       last = text; 
       callback(); 
      } 
      setTimeout(infunc, 100); 
     } 
     setTimeout(infunc, 100); 
    }; 

można nazwać tak:

$("#myInput").allchange(function() { 
    alert("change!"); 
}); 
+0

Podczas gdy to rozwiązanie będzie działać, to jest drogie na cyklach procesora. [This] (http://stackoverflow.com/a/8548572/1057527) jest lepszym rozwiązaniem. – machineaddict