0

ユーザー名入力フィールドにキーアップ イベントがある場合、javascript が入力されたユーザー名が有効かどうかを確認し、有効な場合は ajax 関数を呼び出してその可用性を確認する登録フォーム用のスクリプトを作成しました。

それはうまくいっています。しかし、ユーザー名はキーアップをしなくても入力できます。そのような場合はどうすればよいですか? たとえば、ユーザー名は、入力フィールドをクリックして、ブラウザによって提案された名前を選択するか、自動フォーム フィラーを使用して入力できます。これらの場合、「キーアップ」はありません。これらの場合はどうすればよいでしょうか?

そして、私がいくつかのケースを見逃している場合は、plsが教えてください.

4

3 に答える 3

4

changeコールバックもイベントにバインドします。

代わりに$('username_input').keyupまたは$('username_input').bind('keyup', callback)使用する

$('username_input').bind('keyup change blur', function () {
    //
})

[アップデート]

jQueryを使用していない場合は、試してください

function checkUserName() {
   // Ajax validation code
}
userinput = document.getElementById('yourusernameinputid');
userinput.onclick = userinput.onchange = userinput.onblur = checkUserName;

余談ですが、jQuery を学習してみてください。時間を大幅に節約でき、短時間でより良いサイトを作成するのに役立ちます。

[更新 2]

イベントを使用して自動入力を介して変更を検出する方法がないようです。タイマーを設定して、一定の間隔で入力を自動的にチェックし、最後の値をチェックする必要があります。

(function() {
   // It is always better to use a closure to prevent the value from 
   // getting overwritten by another piece of code
   var value = '';
   setInterval(2000, function() {
      if (userinput.value != value) {
           checkUserName();
           value = userinput.value;
      }
   });
})();
于 2012-07-15T17:13:29.377 に答える
0
  • 次の場合にユーザー名をテストします。
    • ぼかしイベントが発生します (テキスト フィールドがフォーカスを失ったとき)。
    • ユーザーがフォームを送信する前、または
    • チェンジイベントが発生します(これがベストだと思います)。
于 2012-07-15T17:16:57.263 に答える