【问题标题】:Open a dialog box in same window on selectOneMenu change在 selectOneMenu 更改的同一窗口中打开一个对话框
【发布时间】:2012-06-07 11:18:00
【问题描述】:

我有一个 jsf 页面,其中有一个 selectOneMenu,我想打开一个关于 selectOneMenu 更改的对话框。

例如,如果用户从 jsf selectOneMenu 中选择一个值="passive" 它 应该在我想要的同一页面上打开一个对话框或灯箱 像这里一样显示一个小的 jsf 表单。(请单击那个小图像(是的,就像这个对话框一样,我想在选择特定后打开 selectOneMenu 中的值) ) http://www.primefaces.org/showcase-labs/ui/dialogLogin.jsf

我还想将提交的数据保存在我的支持 bean 中的某个地方,以便稍后将其存储到数据库中。

我不知道如何在同一窗口中从支持 bean 打开对话框或灯箱,因为我们将使用 valueChangeListener 事件或使用 ajax 事件来识别值更改。

我能够识别从 selectOneMenu(DropdownMenu) 中选择了哪个值,但不知道如何打开选择特定值的对话框。

<h:outputLabel
            value="* Country: "/>
        <h:selectOneMenu
            id="someSelect"
            value="#{testController.countryName}"
            required="true">
            <f:selectItem
                itemLabel="Select Country"
                itemValue=""/>
            <f:selectItems
                value="#{testController.countryNamesSelectItems}"/>
             </h:selectOneMenu>

假设我们在 selectItems 中有 2 个选项作为印度和澳大利亚,那么如果用户选择印度 一个对话框应该在用户需要填写一些信息并需要提交的同一页面上打开 如果他来自印度(比如这里的例子http://www.primefaces.org/showcase-labs/ui/dialogLogin.jsf(请点击那个小图片(是的,像这个对话框我想在选择特定的 selectOneMenu 中的值) )用户将输入他的用户名和密码并提交数据)

希望对你有帮助

我们如何检查 primefaces , selectOneMenu 的选定值使用 java script(jquery) like done here for richfaces t:selectOneMenu how to get selected value using java script??

【问题讨论】:

  • 如果有人需要更多说明,请告诉我
  • @Matt 向我展示了一个好方法。现在在这个阶段,我无法获得 selectOneMenu 的选定值,我怎样才能在 primefaces 中获得它? ——
  • 好的,我们再试一次:html源码中生成的&lt;select&gt;的id是什么?找到 id,然后在 jQuery 调用中添加带有转义冒号的完整 id,例如:$('#myform\\:selectedGroupId').val()
  • 嘿马特,我可以使用它来显示对话框。 if($("select[name$='someSelect_input'] option:selected").val() == 'India') { dlg.show(); } & 感谢您的完美指导......它真的帮助了我
  • 很高兴听到它有效。我仍然想知道为什么 id 选择器不起作用...

标签: javascript jquery jsf-2 jquery-selectors primefaces


【解决方案1】:

您可以使用h:selectOneMenuonchange 属性打开对话框:

 <h:selectOneMenu
        id="someSelect"
        value="#{testController.countryName}"
        required="true"
        onchange="dlg.show()">

使用dlg 作为p:dialogwidgetVar 属性的值。这将在服务器被击中之前打开对话框。

如果您想在 ajax 请求完成后打开对话框,您可以使用 p:ajaxoncomplete 属性:

<p:ajax update=".." process=".." oncomplete="dlg.show()"/>

或者,如果您想根据所选值打开对话框,您可以使用包装函数:

function showDialog() {
 if($('#IdOfYourSelectOneMenu').val() == 'India') {
   dlg.show();
 }
}

与:

<p:ajax update=".." process=".." oncomplete="showDialog()"/>

【讨论】:

  • 好的,但是如果我将使用 onchange 那么在任何下拉菜单选择中我都会打开该对话框,但我只需要在特定值被选中时打开它。那我该怎么办呢?
  • 如果您只想在客户端执行此操作,您可以为 dlg.show() 编写一个 javascript 包装函数,该函数首先检查所选值,然后打开对话框。或者注册你自己的 javascript/jQuery 事件监听器。
  • 是的,但是我怎么能在javascript中做,如果选择了特定的值打开对话框。?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多