1

emailaと aの 2 つのフォーム要素がありpasswordます。password要素に何かが入力されている場合にのみ、要素を表示する必要がありますemail。つまり、emailが空でない場合のみです。

<input id="email" name="email" onblur="if (jQuery(&quot;#email&quot;).val() === &quot;&quot;) { jQuery(&quot;#password&quot;).hide(); } else { jQuery(&quot;#password&quot;).show(); }" onchange="if (jQuery(&quot;#email&quot;).val() === &quot;&quot;) { jQuery(&quot;#password&quot;).hide(); } else { jQuery(&quot;#password&quot;).show(); }" onfocus="if (jQuery(&quot;#email&quot;).val() === &quot;&quot;) { jQuery(&quot;#password&quot;).hide(); } else { jQuery(&quot;#password&quot;).show(); }" placeholder="Email" style="width:360px;height:28px;margin-bottom:0px;" type="text">

ご覧のとおり、私は 3 つのイベントを処理しています。

  • onfocus: フォーカスが電子メール要素に入ったときに反応するように
  • onblur: フォーカスがメール要素から離れたときに反応するように
  • onchange: メール要素が変更されたときに反応するように

実際には、メールが変更されるたびにスクリプトを実行したいだけです。フォーカスは気にしませんが、一般的な変更イベントを処理できません。

その上、これが私の主な問題ですが、ブラウザがフォームに自動入力しているときに生成されるイベントに反応できません。そのようなイベントはありますか?どうすれば対処できますか?

4

2 に答える 2

1

次の方法でブラウザのオートコンプリート機能を無効にしてみてください。

<form action="demo_form.asp" method="get" autocomplete="off">

また

<INPUT NAME="name" SIZE=40 AUTOCOMPLETE=OFF>

ノート。1つ目はHTML5<form>オートコンプリート属性です

于 2012-09-08T16:05:19.553 に答える
1

ブラウザの自動入力は、最初のページ レンダリングで発生します。「onReady」コールバックでフィールドをチェックしてみましたか? このイベントは、ブラウザから直接ではなく、Jquery などの高レベルの実装によってのみ提供されることに注意してください。

jquery を使用した「準備完了」コールバックの例: (コメントを反映するように更新)

$(function() {
  setTimeout(function() {
    $("#email").trigger('change');
  }, 200);
});

「自分でやる」方法を説明する記事もあります: http://dustindiaz.com/smallest-domready-ever

于 2012-09-08T15:49:36.560 に答える