2012-05-15 75 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