Cómo desactivar autocompletado en inputs de Contact Form 7

25 sept 2018, 11:32:42
Vistas: 18.5K
Votos: 2

Tengo el siguiente código para Contact Form 7. Normalmente uso autocomplete="off" para campos de entrada HTML. Sin embargo, no logro hacer lo mismo con Contact Form 7

<div class="row">
<div class="col-md-6">
    [text* FirstName placeholder "Nombre"]
</div>
<div class="col-md-6">
    [text* LastName placeholder "Apellido"]
</div>
<div class="col-md-12">
    [email* EmailAddress placeholder "Correo electrónico"]
</div>
<div class="col-md-12">
    [text* desc placeholder "Cuéntanos un poco sobre ti..."]
</div>
<div class="col-md-12">
    [submit "Enviar"]
</div>
</div>
0
Todas las respuestas a la pregunta 3
0

Según la pregunta y respuesta del desarrollador publicada aquí: https://wordpress.org/support/topic/autocomplete-off-3/

Solo necesitas añadir la opción autocomplete:off al shortcode:

[email your-email autocomplete:off "example@example.com"]

Aunque si el plugin no ha sido actualizado como se menciona en esa pregunta para usar autocomplete:false, Chrome podría ignorarlo aún. Si no funciona todavía, puede que necesites solicitar soporte al autor del plugin. La función autocomplete se añadió a este plugin en la versión 4.5.

25 sept 2018 13:43:25
2

El autocompletado de etiquetas en la configuración de formularios ya no funciona (en la versión actual del plugin Contact Form 7 5.1.3).

La única solución que funcionó para mí fue agregar atributos personalizados gracias a https://stackoverflow.com/a/46316728/1720476.

Por ejemplo, si tienes campos como Nombre y Apellido donde deseas desactivar el autocompletado.

Añade esto en el archivo functions.php:

add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
    $str_pos = strpos( $content, 'name="Nombre"' );
    if ($str_pos) {
        $content = substr_replace( $content, ' autocomplete="both" autocomplete="off" ', $str_pos, 0 );     
    }

    $str_pos = strpos( $content, 'name="Apellido"' );
    if ($str_pos) {
        $content = substr_replace( $content, ' autocomplete="both" autocomplete="off" ', $str_pos, 0 );
    }

    return $content;
}
9 jul 2019 20:48:07
Comentarios

Genial. Gracias por publicar la respuesta para la versión actualizada.

Varsha Dhadge Varsha Dhadge
10 jul 2019 10:59:01

¡Esto es increíble, el único que funcionó! ¡Gracias compañero!

Rodrigo Zuluaga Rodrigo Zuluaga
14 jul 2020 00:15:09
0

La respuesta sugerida por Arnis funciona si estás utilizando el mismo formulario en todo tu sitio, sin embargo, inyectará texto en formularios que no tengan todos los campos objetivo en tu archivo functions.php.

Para una nueva solución sugerida:

Configurar el atributo "autocomplete" del input o textarea a una variable aleatoria que no sea un valor estándar parece funcionar a partir de diciembre de 2019 para Chrome, no estoy seguro de por qué la opción nativa de CF7 para desactivar el autocompletado no se ha actualizado.

Puedes definir este atributo con una simple línea de jQuery como:

$("input.wpcf7-form-control, textarea.wpcf7-form-control").attr("autocomplete", "negative");

Esto apunta a la clase predeterminada para los campos de CF7.

Edición: olvidé mencionar, esto requiere conocimiento sobre dónde añadir scripts js personalizados, la mayoría de temas premium soportan una sección de JS personalizado o simplemente añade la línea al archivo js principal de tu tema hijo.

10 dic 2019 05:12:05