2011-10-18 35 views
0

私は次のコードの平和を持っている:H:のcommandLinkとonclickのJavascriptの機能

<DIV> 
    <h:commandLink action="#{documentGen.generatePDF}" 
     target="_blank" 
     onclick="return checkSelected();"> 
     <h:graphicImage url="/images/pdf.jpg" 
     styleClass="pdfimage" title="Click to show PDF"></h:graphicImage> 
    </h:commandLink> 
</DIV> 

これ以上のユーザーがチェックボックスを選択して開くことを意図している上記のcommandLinkをクリックすることができ、テーブルに置かれています新しいウィンドウを開き、バックバーンによって生成されたコンテンツを表示します#{documentGen.generatePDF}

これは、に含まれていない場合、期待通りに機能します。onclick="return checkSelected();"が含まれています。私はそれを含めると、バックベイは決して呼び出されません、代わりに、私は現在の複製である新しいウィンドウを取得します。

私はこのチェックボックスをオンにすると、チェックボックスをオンにしてください。 Javascript関数は正常に動作し、commandLinkがクリックされているときにチェックボックスが選択されていなければ警告が表示されます。

私の質問は、なぜonclickコマンドラインが何をしているのですか?何が間違っているのですか?

UPDATE

h:commandLinkh:formの内側にあります。前述のように、コマンドリンクはonclick=....なしで期待通りに機能します。結果は、私は警告が取得され

onclick="return testFunc();"

:に

function testFunc() { 
     alert("GOT Here!") 
     return ture; 
} 

とクリックでのcommandLinkで:私をテストする

はにonclickの上と呼ばれるjavascript関数を変更し、「ここに来ました!」前と同じように、新しいウィンドウは現在のウィンドウの複製であり、バック・ベイは呼び出されません。 onclick行を削除すると、結果が修正されます(ただし、チェックボックスをオンにするにはjavascript関数が必要です)。ブラウザソースに

はonclikとのonclickとなしのcommandLinkとの間の差を表示する以下の通りである:

<a href="#" onclick="return oamSubmitForm('genView','genView:_idJsp33','_blank',[]);" id="genView:_idJsp33" target="_blank"><img src="/images/pdf.jpg" title="Click for Pdf Document" class="pdfimage"></a> 


    <a href="#" onclick="return testFunc();;return oamSubmitForm('genView','genView:_idJsp33','_blank',[]);" id="genView:_idJsp33" target="_blank"><img src="/images/pdf.jpg" title="Click for Pdf Document" class="pdfimage"></a> 

任意の助けが理解されるであろう。あなたがのcommandLinkのonclickイベントでfalseを返す場合のおかげ

答えて

5

を提出されることはありません問題は、あなたがいつも戻ってきているということです。私はあなたが望むものは、必要ならば偽に戻って、それ以外の場合は続行するだけだと思う

ので

onclick="if (checkSelected()) { return false; }"

にあなたのonclickを変更するこれはあなたが前に戻る場合は提出が呼び出されることはありませんので、Ajaxでの問題は、フォームを提出してくださいためのものです。私はこれが標準のフォームも提出されたと考えています。

+0

THANKあんまり、あなたがいた。 – ke3pup

0

は、フォームが