2011-07-03 8 views
0

私はjQueryのトリガーメソッドを使用して発射するカスタムイベントがありますjQueryトリガメソッドからブール値の戻り値を取得する方法は?

$(wizard).trigger('validatingStepValues'); 

はその後、ウィザードの現在のステップのコードで、私は次のようにこのイベントをサブスクライブ:

$(wizard).bind('validatingStepValues', function(){ 
    // Validating step's form data here; returning false on invalid state. 
}); 

その後、私の中でウィザード、私は再び偽の値が検証プロセスから返された場合、次のステップに行くのを止めることができるようにしたいですか?これはあなたがイベントリスナーをバインドする時に使用するコールバックを知っている必要が

function wizardValidator(successCallback, failureCallback) { 
    return function() { 

     // Validating step's form data here; 

     if (wasValid && successCallback) { 
      successCallback(); 
     } 
     else if (! wasValid && failureCallback) { 
      failureCallback(); 
     } 

     return wasValid; 
    }; 
} 

$(wizard).bind('validatingStepValues', wizardValidator(validReturnCallback, invalidReturnCallback)); 

:あなたのようなものを使用して考えがあり

$(wizard).trigger('validatingStepValues', validReturnCallback, invalidReturnCallback) 

答えて

2

:私のような何かをしたいのですが。

$(wizard).bind('validatingStep2Values', wizardValidator(validStep2ReturnCallback, invalidStep2ReturnCallback)); 
$(wizard).bind('validatingStep3Values', wizardValidator(validStep3ReturnCallback, invalidStep3ReturnCallback)); 

代わりに、あなたはDOM階層を伝播trigger()を呼び出すことによって作成したイベント:あなたは、異なる時間に異なるコールバック関数を使用することができるようにしたい場合は、同様に、追加のイベントタイプを定義することができます。 falseを返すと、イベントハンドラはこの伝播をキャンセルします。したがって、ウィザードの親ノードにイベントリスナーとして必要な成功コールバック関数をバインドできます。しかし、あなたの失敗のコールバックが実行されるようにするために何もしません。

+0

これは、すべてのステップで一意のイベントが必要であることを意味します。私はそれが適切ではないと思う。私は第二の部分を理解していませんでした。たぶんそれは技術的すぎた:);)。しかし、私はあなたの返事にとても感謝しています。 –

関連する問題