2009-09-29 11 views
5

Ho un modulo in cui sto disabilitando il pulsante di invio finché un utente non ha digitato tutti i campi obbligatori. Inizialmente utilizzavo onkeyup per mantenere una scheda sui campi obbligatori e attivare il pulsante quando tutti i campi obbligatori sono stati compilati.Evento javascript di trigger quando si utilizza il riempimento automatico di Google su firefox

Ma gli utenti si sono lamentati del fatto che hanno compilato il modulo utilizzando il pulsante Compilazione automatica sulla barra degli strumenti Google e il pulsante di invio è stato ancora disattivato.

Ho risolto questo problema in IE chiamando l'evento onpropertychange per ciascun elemento di input e ha funzionato correttamente.

Ma in Firefox non sono riuscito a trovare un evento che verrà attivato quando si fa clic sul pulsante di riempimento automatico di Google.

Aiuto molto apprezzato.

+0

E 'stato un problema 6 anni fa (http://allinthehead.com/retro/102/the-times-they-are-onchanging) e ancora oggi. –

+0

Holy hell, riempimento automatico è shiite: http://www.google.com/support/forum/p/Toolbar/thread?tid=7dcddc95f43dac19&hl=en –

risposta

0

A giudicare da questo google toolbar support thread, sembra che l'autofill non sia solo un enorme PITA per gli sviluppatori, ma anche molto difficile da disattivare. A partire dal 09 agosto, Google dichiarerà di onorare l'attributo autocomplete="off" sul contenuto di form ma a oggi questa funzione non sembra essere ancora stata rilasciata.

hai utilizzato per essere in grado di dare ai vostri elementi di input nomi non chiacchiere (ad es name="xx_Address_32423423") a confondere Compilazione automatica (e, quindi, in modo efficace disabilitarla), ma hanno fatto di riempimento automatico di più "intelligente", cercando in sottostringhe all'interno i nomi degli elementi per determinare se il campo può essere compilato automaticamente o meno (di nuovo, a giudicare dai reclami in quel thread).

Nel tuo caso, puoi anche rotolare con i pugni e trovare un equivalente per onpropertychange per Firefox. Dai uno sguardo allo DOMAttrModified event. Specifially, provare a controllare il event.attrName property per vedere se il value è stato modificato per la compilazione automatica:

function realOnChange(event) { 
    var attrName = event.propertyName || event.attrName; 
    if(attrName === 'value') { 
     // etc 
    } 
} 

Il controllo per event.propertyName è di rimanere compatibile con il tuo attuale onpropertychange implementazione (se è ancora possibile).

1

Grazie per le vostre risposte. Ho dovuto rispondere rapidamente a questo problema, quindi ho usato la funzione 'setTimeOut()' per verificare i campi obbligatori e abilitare il pulsante di invio.

$().ready(function() { 
    CheckRequiredFields(); 
    timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000"); 
}); 

function AutoMonitorMandatoryField() { 
    if ($("#btnSave").attr("disabled")) { 
     CheckRequiredFields(); 
     timeOutRtn = setTimeout("AutoMonitorMandatoryField()", "3000"); 
    } 
} 

crescentfresh - guarderò nell'evento DOMAttrModified e vedere se riesco a farlo funzionare per me.Thanks

0

Non c'è bisogno di aggiungere setTimeOut complesso né setInterval.

basta prendere l'evento "cambiamento" di qualsiasi testo ricaricabile della forma, passare attraverso ogni campo ricaricabili e se non è vuota nascondere l'etichetta di

+1

l'evento di modifica non viene attivato e non riesco a vedere nessun altro evento è sparato su riempimento automatico. Sembra che debba fare $ (window). Caricare e controllare $ ('input: -webkit-autofill') ... ma anche allora funziona SOMETIMES ... Penso che sia meglio di niente se stai ancora cercando la soluzione definitiva. –

+0

Chrome non genera eventi quando si riempie automaticamente. – enyo

Problemi correlati