2012-02-09 5 views
0

入力がフォーカスを失ったとき、つまりblurイベントが発生したときに、複数のイベントを発生させる必要があるフォームがあります。さまざまなイベントハンドラこれに応答する必要があるものが呼び出されます。jQueryで複数のイベントハンドラを管理する

各フォーム入力タグには、ぼかしの際にさまざまなことが必要です。

  1. 名前が大文字で始まるか、チェックボックスに従ってフォームの領域を表示するなど、さまざまな自動フォーマッタがあります。
  2. jQuery検証。このようAJAX呼び出しとして
  3. ポストの検証機能は、

これまでのところ、私が出ている最良の方法は、イベントバブリングシステムに依存することです。したがって、ポイント1のすべてのイベントが、jQuery.on()を使用して、検証ルールよりもDOMの深い要素に接続されていることを確認してください。 Jquery検証は、イベントリスナーをフォーム要素に関連付けます。

Whistこれはいくつか問題があります。 3つのクラスのイベントにはうまくいきます。

このようなことを簡単にするために、jQueryで使用するシステムのパブリッシャ/サブスクライバの種類はありますか?

+0

私は通常、各要素に対して1つのイベントを使用し、その1つのイベント内のすべての異なるメソッドを実行します。 –

+2

コードを投稿してください。 –

答えて

0

カスタムイベントを見て、それらを試しましたか?ぼかしコードが実行された後は、カスタム「getMeMore」イベントを作成することができますたとえば

$(document).on('blur', '.myInputClass', function(){ 
    // do stuff for blur here 
    $(this).trigger('getMeMore');//now trigger my event 
}); 
$(document).on('getMeMore','.myInputClass',function(){ 
    //do my ajax to get me more here 
}); 

はEDIT:コメントに基づいて:

がセレクタ内の文書は、単にのためのアンカーでありますライブイベントのイベント。この例のhttp://jsfiddle.net/MarkSchultheiss/qM2Mv/を参照してください。ここでは、条件に基づいて別のイベント内でカスタムイベントを発生させます。他のイベントがいつ発射するのかを見るために数字を倍増させてください。私はそれが解釈されていることを知っているが、うまくいけばそれはあなたに何かを働かせるだろう。私は自分のコードでこれを行い、あるイベントが発生したときに他の条件に基づいて「いつ」のイベントが発生するかを管理することができます。これにより、ここでのポイントであるイベント管理からイベントトリガーを分離することができます。カスタムイベントのいくつかを別の場所からトリガする場所に注目してください。 (チェックボックス値とテキストエントリの長さに基づいて)

+0

私はこのようにすることを考えましたが、問題を変えていると思っていました。これは、カスタムイベントをどこかから呼び出さなければならないため、ここではドキュメントレベルから実行しているからです。その機会があれば、私はもう一発発射できなくなるだろう。このメソッドは、実行順序を変更するイベントのバブリングに依存しています。 –

+0

@MattBate - 私の追加した例を見てください –

関連する問題