2012-10-27 20 views
1

在jsf 2項目中,id爲「displayDialog」的commandButton被隱藏。它會獲得一個JavaScript功能觸發:即使在onclick爲空的情況下,在命令按鈕中使用「oncomplete」?

document.getElementById('displayDialog').click(); 

的事情是,我需要的點擊動作在舞臺上進行「的onComplete」,而不是「onclick」事件(由@BalusC here解釋原因)。

我試圖做的:

<p:commandButton style="display: none" id="displayDialog" type="button" onclick="" oncomplete="cd.show();"/> 

<p:commandButton style="display: none" id="displayDialog" type="button" onclick="return false;" oncomplete="cd.show();"/> 

但在這兩種情況下cd.show()沒有付諸行動。這應該怎麼做?

(如果我只是在添加假動作onclick屬性嗎?如果有哪一個?)

+0

在完成ajax請求後,將調用'oncomplete'方法。在這兩個例子中,都沒有執行ajax請求,因此你的'oncomplete'方法永遠不會運行。請注意,第二個例子是你可以做的最糟糕的事情,因爲按鈕永遠不會提交請求。 –

+0

thx!我可以在onclick方法中使用哪種僞/假/無效的ajax請求,以便在之後觸發oncomplete方法? – seinecle

+0

不要寫'onclick'方法。只要寫'oncomplete'即可。 –

回答

2

oncomplete方法是一個Ajax請求後調用,當你說type="button",沒有AJAX請求將被製成。

也就是說,只需刪除type="button"參數,您根本不必執行onclick

<p:commandButton style="display: none" 
       id="displayDialog" 
       oncomplete="cd.show();"/> 

但是,你真的需要的按鈕從一個JavaScript函數調用?如果有另一個組件製作第一個請求,難道你不能只執行oncomplete方法組件?

在你的代碼中,p:commandButton根本沒有任何動作,那麼爲什麼你需要等待動作完成?你正在提交表單或其他內容嗎?

也許如果你準確地解釋你想要做什麼,我們可以想出一個更好的方法來做到這一點。

相關問題