Javascript 使用jQuery更新对话框标题
我无法使用jQuery更新p:对话框的标题:Javascript 使用jQuery更新对话框标题,javascript,jquery,jsf,primefaces,Javascript,Jquery,Jsf,Primefaces,我无法使用jQuery更新p:对话框的标题: <p:commandButton value="#{msgs.ViewPersons}" oncomplete=" jQuery('#ui-dialog-title-viewPersonsDlgId').text('ciao'); viewPersonsDlg.show()"> ... <p:dialog modal="true" id="viewPersonsDlgId" widgetVar="view
<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中没有看到错误。对话框的标题保持为空,或者显示我在对话框的标题属性中输入的内容(如果存在)
我不是jQuery方面的专家,我从primefaces中获取了jQuery语法。可能我误解了什么。那么:
$('#myDialogId').dialog( "option", "title", "ciao" );
请相信我,没有具有此id的元素:ui对话框标题viewPersonsDlgId。使用哈希符号,您可以按id查找元素。ui dialog title是对话框中的一个span类,其中定义了标题,viewPersonsDlgId是其id。因此正确的代码是:
oncomplete="jQuery('#viewPersonsDlgId .ui-dialog-title').text('ciao');viewPersonsDlg.show()"
编辑:删除答案的前一部分,该部分不是问题的原因。同样重要的是,您必须指定对话框的正确id,因此,如果它被放置在表单中,并且在表单属性中不使用prependId=false,那么请使用…formID\\:viewPersonsDlgId。。。您必须转义:在带有双斜杠的jQuery中,这会抛出一个Javascript错误:$viewPersonsDlgId.dialog不是函数。可能是因为PrimeFaces自动嵌入了一个特定版本的jQuery?你确定你已经加载了jQuery ui?对不起,我忘了提到我也尝试过了。相同的行为:没有错误,没有标题的更新。使用对话框外部的表单,没有jQuery,一切都可以正常工作。使用update=:myFormId就足够了。但我想将表单移动到对话框中,因为我已经了解到,有时另一种方式会出现问题。请尝试此代码,我已经在简单的代码段上对其进行了测试,并且工作正常。首先确保选择器返回正确的元素。从firebug控制台提示符调用jQuery命令jQuery'ui-dialog-title-viewPersonsDlgId'。text并检查返回的内容。如果它没有返回任何内容,则说明选择器错误。如果页面上只有一个对话框,则可以使用类选择器选择其标题:jQuery'.ui dialog title'.text;我已经用Fallup的解决方案解决了。无论如何谢谢你