2009-09-29 11 views
5

Tengo un formulario, en el que estoy deshabilitando el botón de enviar hasta que un usuario haya ingresado todos los campos obligatorios. Inicialmente estaba usando onkeyup para mantener una pestaña en los campos obligatorios y habilitar el botón cuando se llenan todos los campos obligatorios.Desencadenar el evento javascript al usar el auto relleno de Google en firefox

Pero tenía usuarios que se quejaban de que rellenaron el formulario usando el botón Autorrelleno en la barra de herramientas de Google y el botón de enviar aún estaba deshabilitado.

Solucioné este problema en IE llamando al evento onpropertychange para cada elemento de entrada y funcionó bien.

Pero en firefox, no pude encontrar un evento que se activará cuando se haga clic en el botón Google Autocompletar.

Ayuda muy apreciada.

+0

Era un problema de hace 6 años (http://allinthehead.com/retro/102/the-times-they-are-onchanging) y aún hoy. –

+0

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

Respuesta

0

A juzgar por este google toolbar support thread, parece que Autocompletar no es solo un gran PITA para desarrolladores, sino también muy difícil de desactivar. A partir del 09 de agosto, google afirma que respetará el atributo autocomplete="off" en el que contiene form, pero a partir de hoy, esta característica no parece estar disponible aún.

que solía ser capaz de dar a sus elementos de entrada nombres sin sentido (por ejemplo name="xx_Address_32423423") para confundir relleno automático (y por lo tanto desactivar efectivamente), pero se han hecho más de relleno automático "inteligente" examinado subcadenas dentro de los nombres de sus elementos para determinar si el campo puede rellenarse automáticamente o no (nuevamente, a juzgar por las quejas en ese hilo).

En su caso, también puede rodar con los golpes y encontrar un equivalente para onpropertychange para Firefox. Eche un vistazo al DOMAttrModified event. Specifially, trata de comprobar la event.attrName property para ver si el value ha sido cambiado por el relleno automático:

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

El cheque por event.propertyName es permanecer compatible con su actual onpropertychange aplicación (si eso es incluso posible).

1

Gracias por su respuesta. Tuve que responder rápidamente a este problema, por lo tanto, utilicé la función 'setTimeOut()' para verificar los campos obligatorios y habilitar el botón de enviar.

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

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

crescentfresh - Voy a mirar en el evento DOMAttrModified y ver si puedo conseguir que funcione para me.Thanks

0

No hay necesidad de añadir setTimeOut complejos ni setInterval.

Sólo capturar el evento "cambio" de cualquier cuadro de texto del formulario rellenable, ir a través de todos los campos rellenables y si no está vacío ocultar la etiqueta

+1

el evento de cambio no se activa y no puedo ver ningún otro evento eso se disparó al autocompletar. Parece que tiene que ver $ (ventana) .load y marcar $ ('input: -webkit-autofill') ... pero aun así SOLO A VECES funciona ... Creo que es mejor que nada si todavía estás buscando la mejor solución –

+0

Chrome no activa ningún evento cuando se autocompleta. – enyo

Cuestiones relacionadas