Один из наших пользователей только что поднял вопрос о том, что автозаполнение в их браузерах не вызывает срабатывания событий JS onChange; это вызывает у нас проблемы с регистрацией пользователей.
Это задумано? Есть ли способ обойти это?
Один из наших пользователей только что поднял вопрос о том, что автозаполнение в их браузерах не вызывает срабатывания событий JS onChange; это вызывает у нас проблемы с регистрацией пользователей.
Это задумано? Есть ли способ обойти это?
Одно из решений, которое я иногда использую, - это проверить, отличается ли значение поля / ввода / выбора от значения defaultValue. defaultValue будет значением, которое изначально было в разметке, а value - текущим значением, также известным как выбранное или введенное значение. Это, вероятно, будет отличаться, даже если форма была заполнена автоматически.
Если вы хотите полностью отключить автозаполнение, было бы разумно добавить autocomplete = "off" в поля, которые напрямую связаны с вашей логикой.
Если вы хотите получить поведение автозаполнения, но изменить стиль, возможно, вы можете сделать что-то вроде этого (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
}});
Вы пробовали использовать onpropertychanged вместо события onchange? Это только для IE, и это рекомендуемое исправление на MSDN.
На всякий случай, если кто-то все еще ищет решение (как и я сегодня), чтобы прослушать изменение автозаполнения браузера, вот собственный метод 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!");
});
Вот довольно хорошее решение, которое делает что-то похожее на то, что описал jishi:
Обновлена неработающая ссылка со ссылкой на Wayback Machine.