Как отключить автозаполнение для полей формы в Contact Form 7?

25 сент. 2018 г., 11:32:42
Просмотры: 18.5K
Голосов: 2

У меня есть следующий код для формы Contact Form 7. Обычно я использую autocomplete="off" для HTML-полей ввода. Однако не могу понять, как сделать то же самое для Contact Form 7

<div class="row">
<div class="col-md-6">
    [text* FirstName placeholder "Имя"]
</div>
<div class="col-md-6">
    [text* LastName placeholder "Фамилия"]
</div>
<div class="col-md-12">
    [email* EmailAddress placeholder "Email"]
</div>
<div class="col-md-12">
    [text* desc placeholder "Расскажите немного о себе..."]
</div>
<div class="col-md-12">
    [submit "Отправить"]
</div>
</div>
0
Все ответы на вопрос 3
0

Согласно вопросу и ответу разработчика, размещенному здесь: https://wordpress.org/support/topic/autocomplete-off-3/

Вам просто нужно добавить параметр autocomplete:off в шорткод:

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

Однако, если плагин не был обновлен, как указано в этом вопросе, для использования autocomplete:false, Chrome может его игнорировать. Если это все еще не работает, вам может потребоваться обратиться в поддержку автора плагина. Функция autocomplete была добавлена в этот плагин в версии 4.5.

25 сент. 2018 г. 13:43:25
2

Автозаполнение тегов в настройках формы больше не работает (на текущей версии плагина Contact Form 7 5.1.3).

Единственное решение, которое сработало для меня — это добавление пользовательских атрибутов, как описано в https://stackoverflow.com/a/46316728/1720476.

Например, если у вас есть поля FirstName и LastName, где вы хотите отключить автозаполнение.

Добавьте этот код в файл functions.php:

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

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

    return $content;
}
9 июл. 2019 г. 20:48:07
Комментарии

Круто. Спасибо, что опубликовали ответ для обновленной версии.

Varsha Dhadge Varsha Dhadge
10 июл. 2019 г. 10:59:01

Это невероятно, единственное, что сработало!! Спасибо, приятель!!

Rodrigo Zuluaga Rodrigo Zuluaga
14 июл. 2020 г. 00:15:09
0

Предложенный Арнисом ответ работает, если вы используете одну и ту же форму на всем сайте, однако он будет добавлять текст в формы, которые не содержат всех полей, указанных в файле functions.php.

Новое предложенное решение:

Установка атрибута "autocomplete" для input или textarea в случайное значение, которое не является стандартным, по состоянию на декабрь 2019 года решает проблему в Chrome. Непонятно, почему встроенная опция CF7 для отключения автозаполнения до сих пор не обновлена.

Вы можете задать этот атрибут с помощью простой строки jQuery:

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

Этот код применяется к стандартному классу полей CF7.

Примечание: забыл упомянуть, что для этого требуется знание, куда добавлять пользовательские JS-скрипты. Большинство премиум-тем поддерживают раздел для пользовательского JS, либо можно просто добавить эту строку в основной JS-файл дочерней темы.

10 дек. 2019 г. 05:12:05