2011-02-08 9 views

risposta

7

Una soluzione che uso occasionalmente è controllare se il valore del campo/input/select è diverso dal valore predefinito. defaultValue sarebbe il valore che era originariamente nel markup, e value è il valore corrente, ovvero il valore selezionato o inserito. Questo probabilmente differirebbe anche se la forma era stata sottoposta ad autopopolazione.

Se si desidera disattivare la compilazione automatica del tutto, potrebbe essere saggio aggiungere il completamento automatico = "off" sui campi che sono direttamente collegati alla logica.

+0

Ho anche provato una soluzione simile, ma il il problema è che ho impostato il testo su "" e dopo che il completamento automatico di chrome avviene inserendo nuovamente le mie credenziali ... – Revious

+0

Ora Chrome esclude il completamento automatico e ha deciso che è meglio UX completare automaticamente tutto: - \ – webdevinci

0

Hai provato a utilizzare l'evento onproperty invece di onchange? Questo è solo per Internet Explorer ed è la soluzione consigliata su MSDN.

+0

lo farei, ma essendo un sito web visto da centinaia di migliaia di persone in tutto ogni immaginabile del browser, non credo che funzionerebbe molto bene. –

+0

Sembra simile: http://stackoverflow.com/questions/343192/why-does-the-javascript-oschange-event-not-fire-if-autocomplete-is-on – Satyajit

0

Solo nel caso qualcuno è ancora alla ricerca di una soluzione (proprio come lo ero io oggi, per ascoltare una modifica del compilatore automatico del browser, ecco un metodo jquery personalizzato che ho creato, solo per semplificare il processo quando si aggiunge un listener di modifiche a un input:

$.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); 
    }; 

Si può chiamare in questo modo:

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

Mentre questa soluzione funzionerà, è costoso nei cicli della CPU. [Questo] (http://stackoverflow.com/a/8548572/1057527) è una soluzione migliore. – machineaddict

Problemi correlati