Подтвердить что ты не робот

JQuery отключить автозаполнение ввода

У меня есть этот код:

html:

<input id="register_username" type="text">
<input id="register_password" type="text">
<input id="register_repeatpassword" type="text">
<input id="register_email" type="text">

JQuery:

$(document).ready(function(){
    $('#register_username').attr('autocomplete','off');
    $('#register_password').attr('autocomplete','off');
    $('#register_repeatpassword').attr('autocomplete','off');
    $('#register_email').attr('autocomplete','off');
    });

Я хочу отключить функцию автозаполнения, выделенную некоторыми браузерами, и фактически заставить пользователя вводить все поле, но код не работает, выпадающее меню все еще появляется, и пользователь все еще может выбрать материал, который был напечатан раньше. Я также пытался использовать пользователь autocomplete="off", но ничего не произошло. Что я здесь делаю неправильно?

4b9b3361

Ответ 1

Просто добавьте:

autocomplete="off"

в качестве атрибутов элементов INPUT, f.ex:

<input autocomplete="off" id="register_username" type="text" name="username">

Ответ 2

Версия jQuery:

$("#register_username").attr("autocomplete", "off");

Ответ 3

проверьте этот fiddle вне

 document.getElementById("register_username").autocomplete="off"

Ответ 4

Хотя я согласен, autocomplete="off" должен быть широко поддержан и является конечным решением, он не работает, может быть результатом спецификации HTML5 в атрибуте автозаполнения:

Механизм автозаполнения должен быть реализован пользовательским агентом, действующим так, как будто пользователь изменил значение элемента, а должен выполняться в то время, когда элемент изменен (например, сразу после того, как элемент были вставлены в документ или когда пользовательский агент прекратил разбор).

Это, для меня, подразумевает, что он должен быть "оригинальным" атрибутом элемента и не может быть добавлен post-render. И так как большинство браузеров реализуют новую спецификацию 1 скорее всего, если они разрешили ее с помощью javascript, прежде чем они, вероятно, исправили реализацию на основе вышеупомянутой спецификации.

Если вы еще этого не сделали, попробуйте добавить атрибут непосредственно к элементам управления вместо того, чтобы полагаться на jQuery, делая это на [предположительно] готовом документе.

1 Я использую здесь спецификацию, поскольку HTML5 не является стандартом, но многие браузеры реализуют некоторые из более конкретных функций. Поскольку autocomplete существует с тех пор, как IE5, вероятно, это один из тех, которые вы можете рассмотреть как безопасную реализацию.

Ответ 5

<form id='myForm'>
    <input id="register_username" type="text">
    <input id="register_password" type="text">
    <input id="register_repeatpassword" type="text">
    <input id="register_email" type="text">
</form>
$(document).ready(function(){
    $('#myForm').on( 'focus', ':input', function(){
        $(this).attr( 'autocomplete', 'off' );
    });
});

Ответ 6

Теперь вам нужно заменить "off" на другую случайную строку, например "nope":

Jquery:

$("#register_username").attr("autocomplete", "nope");

HTML:

<input id="register_username" type="text" autocomplete="nope">

Ответ 7

Работает по состоянию на 23 апреля 2019 года.

Если вы хотите отключить автозаполнение Chrome на всех страницах, особенно если вы не используете формы, а используете сериализованные селекторы jquery для отправки ваших данных.

Выполнение этого во время выполнения дало наилучшие результаты для меня, и Chrome все равно будет автоматически заполняться во время выполнения, так что это оправданное решение для противодействия поведению Chrome.

Просто добавьте это внизу вашего кода, и Chrome не будет пытаться принудительно заполнить вещи:

<script>
    $(document).ready(function () {
        $("input").attr("autocomplete", "new-password");
    });
</script>

Ответ 8

в случае, если кто-то приходит сюда в поисках, как отключить автозаполнение jquery:

$("#elementId").autocomplete({
  disabled: true
  });

Ответ 9

Используя jQuery, я делаю это на странице макета, или немного HTML, который будет присутствовать на каждой странице сайта.

$(document).ready(function () {

        //when the page is done loading, disable autocomplete on all inputs[text]
        $('input[type="text"]').attr('autocomplete', 'off');

        //do the same when a bootstrap modal dialog is opened
        $(window).on('shown.bs.modal', function () {
            $('input[type="text"]').attr('autocomplete', 'off');
        });
});