ユーザーの1人が、ブラウザーのオートフィルによってJSonChangeイベントが発生しないという事実を指摘しました。これにより、ユーザー登録で問題が発生します。
これは仕様によるものですか?それを回避する方法はありますか?
ユーザーの1人が、ブラウザーのオートフィルによってJSonChangeイベントが発生しないという事実を指摘しました。これにより、ユーザー登録で問題が発生します。
これは仕様によるものですか?それを回避する方法はありますか?
私が時々使用している解決策の1つは、field / input/selectの値が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
}});
onchangeイベントの代わりにonpropertychangedを使用してみましたか?これは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が説明したのと同様のことを行う非常に優れたソリューションです。
壊れたリンクをWaybackMachineリンクで更新しました