Événement déclenché automatiquement par Javascript et Javascript

L'un de nos utilisateurs a simplement expliqué que leur navigateur Autofill ne provoque pas le déclenchement des événements JS onChange; Cela entraîne un problème avec l'inscription des utilisateurs pour nous.

Est-ce que c'est par conception? Existe-t-il un moyen de contourner ce problème?

Une solution que j'ai utilisée de temps en temps consiste à vérifier si la valeur du champ / entrée / sélection diffère de celle de defaultValue. DefaultValue serait la valeur qui était à l'origine dans le balisage, et la valeur est la valeur actuelle aka sélectionnée ou la valeur saisie. Cela serait probablement différent même si la forme a été automatisée.

Si vous désirez désactiver complètement le remplissage automatique, il est peut-être judicieux d'ajouter autocomplete = "off" sur les champs directement connectés à votre logique.

Avez-vous essayé d'utiliser l'événement onpropertychanged à la place de l'échange? C'est seulement pour IE et c'est la solution recommandée sur MSDN.

Juste au cas où quelqu'un chercherait toujours une solution (comme je l'étais aujourd'hui), pour écouter un changement de remplissage automatique du navigateur, voici une méthode jquery personnalisée que j'ai construite, juste pour simplifier le processus lors de l'ajout d'un auditeur de modification à une entrée :

$.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); }; 

Vous pouvez l'appeler comme ceci:

 $("#myInput").allchange(function () { alert("change!"); }); 

Voici une très bonne solution qui fait quelque chose de similaire à ce que jishi a décrit:

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

Mise à jour du lien brisé avec Wayback Machine link