Запускаемые браузером события автозаполнения и Javascript - PullRequest
20 голосов
/ 08 февраля 2011

Один из наших пользователей только что упомянул тот факт, что автозаполнение их браузеров не вызывает события JS onChange;это вызывает у нас проблему с регистрацией пользователя.

Это сделано специально?Есть ли способ обойти это?

Ответы [ 5 ]

9 голосов
/ 09 февраля 2011

Одно из решений, которое я иногда использовал, состоит в проверке, отличается ли значение поля / input / select от его значения по умолчанию.defaultValue будет значением, которое было изначально в разметке, а значение - текущее значение, то есть выбранное или введенное значение.Это, вероятно, будет отличаться, даже если форма была заполнена автоматически.

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

0 голосов
/ 12 декабря 2018

Если вы хотите получить поведение автозаполнения, но изменить стиль, возможно, вы можете сделать что-то вроде этого (jQuery):

$(window).load(function(){  
  if($('input:-webkit-autofill')){   
    $('input:-webkit-autofill').each(function(){
      //put your conditions here 
    });   
    // RE-INITIALIZE VARIABLES HERE IF YOU SET JQUERY OBJECT'S TO VAR FOR FASTER PROCESSING 
}});
0 голосов
/ 20 августа 2014

На тот случай, если кто-то все еще ищет решение (как и я сегодня) для прослушивания изменений автозаполнения браузера, вот собственный метод jquery, который я построил, просто чтобы упростить процесс при добавлении прослушивателя изменений на вход:

    $.fn.allchange = function (callback) {
        var me = this;
        var last = "";
        var infunc = function () {
            var text = $(me).val();
            if (text != last) {
                last = text;
                callback();
            }
            setTimeout(infunc, 100);
        }
        setTimeout(infunc, 100);
    };

Вы можете назвать это так:

$("#myInput").allchange(function () {
    alert("change!");
});
0 голосов
/ 22 февраля 2013

Вот довольно хорошее решение, которое делает нечто похожее на то, что описал jishi:

https://web.archive.org/web/20131125153914/http://furrybrains.com/2009/01/02/capturing-autofill-as-a-change-event/

Обновлена ​​неработающая ссылка с помощью Wayback Machine link

0 голосов
/ 08 февраля 2011

Вы пытались использовать onpropertychanged вместо onchange событие? Это только для IE, и это рекомендуемое исправление для MSDN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...