0

私のページにはいくつかのjsf'commandLinks 'あります。これらのcommandLinkには、onClickイベントがあります。現在、これらのcommandLinkのonclick属性としてonclick関数を直接記述しています。

これはcommandLinkであるため、htmlアンカータグを作成し、フォーム送信用にいくつかのjsfJavaScriptを添付します。JavaScriptをonclick属性に直接書き込むと、jsfは独自のJavaScriptを挿入しながらそのJavaScriptを処理します。しかし、同じイベントハンドラーをjQueryを介してアタッチすると、イベントハンドラーを実行する前にフォームを認識して送信しません。

この問題に対する適切な解決策はありますか?

4

1 に答える 1

3

jQuery関数に、JSFが内部で実行しているのと同じように実行させる必要があります。onclick属性で指定されたカスタムonclick関数を、カスタムonclick関数の結果に応じてフォームを送信する標準のJSFジョブを実行する別の関数でラップします。

linkこれらすべてのリンク要素にクラスがあり、カスタムonclick関数がであると仮定した場合のキックオフの例を次に示しますyourCustomFunction()

$(".link").each(function(i, element) {
    var originalJsfOnclick = element.onclick; // Grab the JSF-generated onclick function.
    element.onclick = null; // Reset it.

    $(element).click(function(event) {
        if (yourCustomFunction()) { // First call your function.
            originalJsfOnclick.call(element, event); // If it returns true, then execute the JSF-generated onclick.
        }
    });
});

function yourCustomFunction() {
    // ...
}
于 2012-04-22T17:23:24.230 に答える