2012-05-16 21 views
6

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

+0

私はこれまでにこれを研究しましたが、できるとは思わないが、ブラウザの自動入力のイベントはありません。しかし、どんな答えにも興味があります:) –

+0

何をやっているのか正確に分からないと、 '.change()'イベントハンドラも追加できますか?私は正直なところ、たとえそのイベントがブラウザの自動入力でも発生するかどうかはわかりません。 – jaredhoyt

+0

私はJaredが提案したように '.change()'を試してみましたが、うまくいかない場合は '.blur()'を使わなければならないかもしれません。 – nnnnnn

答えて

2

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

また、妥当性検査イベントをフォーム送信時に実行させることもできますが、これも同様に有効です。

+0

yea on submissionテクニックの問題は、コンテンツの検証に基づいて入力枠の色を変更しているため、変更されるたびにイベントが発生する必要があります –

0

.click()イベントおよび/または.dblclick()イベントにバインドすることで、希望の動作を少し偽装できます。

これは保証されていませんが、ボックスからオートコンプリートを選択して承認すると、余分なマウスクリックが発生する可能性があります。

2

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

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

このように、ブラウザの自動入力による候補を入力すると、このように表示されます。提案でマウスをクリックしても問題は残りますが、選択した後でいずれかのキーを押すと問題なく動作します。

FINAL私はstackoverflowの上で、この記事を見つけました

SOLUTION:https://stackoverflow.com/a/24746108/3481005

と.on使用して( "入力")は、トリックを行います!

$("#email").on("input",function (e) { 
関連する問題