23

ユーザーの1人が、ブラウザーのオートフィルによってJSonChangeイベントが発生しないという事実を指摘しました。これにより、ユーザー登録で問題が発生します。

これは仕様によるものですか?それを回避する方法はありますか?

4

5 に答える 5

10

私が時々使用している解決策の1つは、field / input/selectの値がdefaultValueと異なるかどうかを確認することです。defaultValueは元々マークアップにあった値であり、valueは現在の値(選択または入力された値)です。フォームが自動入力されたとしても、これはおそらく異なるでしょう。

オートフィルを完全にオフにしたい場合は、ロジックに直接接続されているフィールドにautocomplete="off"を追加することをお勧めします。

于 2011-02-08T21:18:21.883 に答える
1

オートフィルの動作を取得したいが、スタイルを変更したい場合は、次のようにすることができます(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 
}});
于 2018-12-12T09:46:23.213 に答える
0

onchangeイベントの代わりにonpropertychangedを使用してみましたか?これはIE専用であり、MSDNで推奨される修正です。

于 2011-02-08T20:56:27.920 に答える
0

誰かがまだ解決策を探している場合に備えて(今日のように)、ブラウザーの自動入力の変更をリッスンするために、変更リスナーを入力に追加するときのプロセスを簡素化するために、私が作成したカスタム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!");
});
于 2014-08-19T21:15:48.137 に答える
-2

これは、jishiが説明したのと同様のことを行う非常に優れたソリューションです。

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

壊れたリンクをWaybackMachineリンクで更新しました

于 2013-02-22T04:21:08.187 に答える