0

document.ready の jQuery でコールバックを追加する必要がある Primefaces コマンド ボタンがあります。基本的に私がやろうとしてきたことは、既存の関数への参照を取得し、それを私が書いた新しい関数で呼び出すことです:

var existingFunction = jQuery("[id~='submit']").live("click");
jQuery("[id~='submit']").live("click", function(){
    existingFunction();
    alert('test');
    updateControlPanel(buildControlPanelUrl(getUrlVars()));
});

私には十分に単純に思えますが、何らかの理由でこれは機能しません。ページを読み込んで送信ボタンをクリックしても、アラートに到達しません。

エラーコンソールを確認したところ、次のエラーがスローされていることがわかりました。

((f.event.special[s.origType] || {}).handle || s.handler).apply is not a function

私が書いていないページに既存のjQuery関数がありますが、このエラーが私がこれに近づいている方法に関連していないことを確認したいと思います.

古いバージョンの JQuery (1.3 または 1.4 ) で tomcat 6 を使用しています。

ありがとうございます。さらに情報が必要な場合はお知らせください。

編集

JS Fiddle でやろうとしていることの例を挙げました: http://jsfiddle.net/anSXH/2/

ここでさらに説明します。最新の Primefaces コンポーネント ライブラリを使用して、ボタンを JSF 2.0 (MyFaces) のプロジェクトとして作成しました。次に、そのボタンを既存の Web ページに埋め込みました。ボタンはフォームを送信し、JavaScript 関数を呼び出して、ajax リクエストが完了した後にページに結果を表示します。ボタンをページに埋め込むと、これはすべて機能しますが、ボタンが関数を呼び出した後、クライアント側で何かを更新する必要があります。そのため、既存の onclick 関数にコールバックを追加することを検討しています。

ちなみに、私は Primefaces を使用しているため、ajax リクエストの完了後に実行する JavaScript 関数をアタッチできます。私の計画 B は、この関数にアクセスして、何らかの方法でオーバーライドすることです。

編集パート 2 以下は、primefaces から生成されたコントロールです。

<button 
 id="topsaveform:submittop"
 name="topsaveform:submittop"
 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
 onclick="PrimeFaces.ab({source:'topsaveform:submittop',process:'topsaveform OEIMeasurementsTable',update:'errorMessages submittedPopup',onstart:function(cfg){jQuery('#loadingBar').show('fast');;},oncomplete:function(xhr,status,args){postSubmit();;}});return false;" 
 type="submit">
   <span class="ui-button-text">Save</span>
</button>
4

2 に答える 2

0

元の関数die( ref ) を作成してみましたか?

jQuery("[id~='submit']").die("click");
jQuery("[id~='submit']").live("click", function(){
    alert('test');
    updateControlPanel(buildControlPanelUrl(getUrlVars()));
});
于 2012-06-10T18:21:21.077 に答える
0

問題は、primefaces ボタンを使用してこれを実行しようとしていたことです。標準の JSF ボタンに切り替えたところ、問題なく機能を追加できました。

于 2012-06-11T20:32:30.180 に答える