2010-05-18 5 views
8

Por lo tanto, tengo este código:jQuery - inflexión "autocompletar" en off para todas las formas (incluso los no cargados todavía)

$(document).ready(function(){ 
    $('form').attr('autocomplete', 'off'); 
}); 

Funciona muy bien para todas las formas ya existentes. El problema es que algunas formas mías están en ventanas emergentes cargadas a través de ajax. Esto no se aplicará a ellos ya que están "cargados" más tarde.

Sé que hay una función en vivo(), pero eso es solo para adjuntar eventos. ¿Cuál es una buena manera de aplicar esto a todos los formularios?

Gracias.

Respuesta

27

Puede vincular un evento en vivo al evento de enfoque y luego cambiar el atributo en eso.

$(document).ready(function(){ 
    $(':input').live('focus',function(){ 
     $(this).attr('autocomplete', 'off'); 
    }); 
}); 

A partir de jQuery 1.7 jQuery.live se desaprobó. Este código ahora se vería así:

$(document).ready(function(){ 
    $(document).on('focus', ':input', function(){ 
     $(this).attr('autocomplete', 'off'); 
    }); 
}); 
+0

la función en vivo() ahora es obsoleto http://api.jquery.com/live/ ahora debe utilizar en http: // api. jquery.com/on/ –

+0

@AndyBrudtkuhl no hay razón para rechazar una respuesta de 3 años porque está un poco desactualizada. He actualizado la respuesta para que esté un poco más actualizada. – PetersenDidIt

+0

Bajé la votación porque no funcionó, ¿ese no es el sentido de la votación negativa? Dejé un comentario señalando por qué junto con una respuesta actualizada. Me parece una etiqueta de pila adecuada. Eliminé mi voto negativo ahora que está claro que la respuesta original estaba en desuso. Gracias por actualizar –

3

El evento en vivo ahora está en desuso, en su lugar debería ser el evento on. Esto se adjuntará a cada entrada en el DOM sin importar si se ha creado aún o no. A continuación, agregará el atributo autocompletar = "off" a esa entrada.

$(document).ready(function() { 
    $(document).on('focus', ':input', function() { 
    $(this).attr('autocomplete', 'off'); 
    }); 
}); 
1

uso jQuery podría no ser suficiente, ya que algunos navegadores como Chrome podría cargar el 'autocompletar' salvado de datos antes documento está listo ($ (document) ready)

jQuery funciona de la siguiente

$('input, :input').attr('autocomplete', 'off'); 

además de añadir manualmente autocompletar = 'off' a las etiquetas de entrada podría ser más eficiente

Cuestiones relacionadas