2012-05-15 114 views
2

我不能夠使用更新p:dialog的標題jQuery的:更新對話框標題使用jQuery

<p:commandButton value="#{msgs.ViewPersons}" oncomplete=" 
    jQuery('#ui-dialog-title-viewPersonsDlgId').text('ciao'); 
    viewPersonsDlg.show()"> 
... 
<p:dialog modal="true" id="viewPersonsDlgId" 
    widgetVar="viewPersonsDlg" dynamic="true"> 

奇怪的是,第二JavaScript語句:viewPersonsDlg.show()成功執行,我看不出錯誤在Firebug。該對話框的標題保持空白,或者顯示對話框的header屬性中存在的內容(如果存在)。

我不是jQuery的專家,我已經從primefaces forum採取了jQuery語法。可能我誤解了一些東西。

+0

首先確保您的選擇器返回正確的元素。從firebug控制檯提示符調用jQuery命令'jQuery('#ui-dialog-title-viewPersonsDlgId')。text()'並檢查它返回的內容。如果它沒有返回任何東西,你的選擇器是錯誤的。如果你的頁面只有一個對話框,你可以用類選擇器來選擇它的標題:'jQuery('。ui-dialog-title')。text();' –

+0

我已經用Fallup的解決方案解決了。無論如何感謝 – perissf

回答

3

相信我有這個id沒有元素:#ui-dialog-title-viewPersonsDlgId。使用散列符號,您可以通過id找到元素。 ui-dialog-titlespanclassdialog,其中title被定義,並且viewPersonsDlgId是它的id。所以,正確的代碼是:

oncomplete="jQuery('#viewPersonsDlgId .ui-dialog-title').text('ciao');viewPersonsDlg.show()" 

編輯:刪除答案的前一部分這是不是你的問題的原因。還有一個重要的事情是,你必須指定dialog的正確id,因此,如果它被放置在form內,您不使用prependId="false"form屬性然後使用...#formID\\:viewPersonsDlgId...(你有逃跑「:」在jQuery的雙斜槓)

+0

對不起,我忘了提及,我也試過。同樣的行爲:沒有錯誤,不更新標題。 – perissf

+0

使用對話框外的窗體,沒有jQuery,一切正常。使用update =「:myFormId」就足夠了。但我想在對話框中移動表單,因爲我已經讀過,有時候另一種方式會產生問題。 – perissf

+0

試試這段代碼,我已經在簡單的代碼片段上測試過了,它工作正常。 – Fallup

0

如何:

$('#myDialogId').dialog("option", "title", "ciao"); 
+0

這引發了一個Javascript錯誤:$(「#viewPersonsDlgId」)。dialog不是一個函數。可能是因爲PrimeFaces自動嵌入特定版本的jQuery? – perissf

+1

你確定你有jquery-ui加載? – Gabe

+0

老實說,我不確定這件事...... – perissf