8

これらのイベントを使用してフォーム入力を評価しようとしていますが、フォームがブラウザーによって自動入力されると、これらのイベントは発生しません。オートフィルでもイベントを発生させるにはどうすればよいですか?

4

3 に答える 3

4

私はそれがかなり古い質問であることを知っていますが、 keyup 関数の後に e.preventDefault() を使用して同じ問題を解決しました。

$("#email").keyup(function (e)  {
        e.preventDefault();

このように、ブラウザの自動入力による提案を入力して選択すると、それが通知されます。提案をマウスでクリックしても問題は残りますが、選択後に任意のキーを押すと問題なく動作します。

最終的解決

stackoverflow でこの投稿を見つけました: https://stackoverflow.com/a/24746108/3481005

.on("input") を使用するとうまくいきます。

$("#email").on("input",function (e)  {
于 2015-10-21T15:05:00.253 に答える
2

残念ながら、ブラウザの自動入力を検出する方法はありません。代わりに、setIntervalたとえば、を使用して、元の値(または空)が入力値と一致するかどうかをチェックし、その方法で応答をトリガーする関数をかなり高い頻度で実行します。それを望まない場合は、ブラウザがトリガーすらしないため、おそらくSOL.changeであり、どのイベントもクロスブラウザに準拠していない可能性があります。

フォームの送信時に検証イベントを実行することもできます。これも同様に効果的です。

于 2012-05-16T01:46:00.190 に答える