2013-03-16 71 views
0

当我使用inside dataTable时,我对p:selectonemenu有一个要求。在selectonemenu中选择值后立即显示对话框

<p:selectOneMenu value="#{buyerInProcessBean.subject}" 
          id="buyerResponseId" > 
          <f:selectItems 
           value="#{buyerInProcessBean.subjectMap[trans.decisionrule.ruleId]}" 
           var="subject" itemLabel="#{subject}" itemValue="#{subject}"></f:selectItems> 
          <f:selectItem itemLabel="Other" itemValue="Other"></f:selectItem> 
         </p:selectOneMenu> 

如果我选择“其他”,对话必须强制弹出。否则它不是强制性的。

我该如何达到这种要求?

+0

您可以添加ONSELECT = “你的dialogWidgetVar.show()” 中的selectOneMenu用于 – 2013-03-16 11:14:29

+1

@Ali:有上selectOneMenu用于无ONSELECT属性。可能是变化 – Sagar 2013-03-16 11:40:08

+0

但我的要求是只有当我们选择'其他'对话必须弹出。否则它是可选的(无需弹出) – Sagar 2013-03-16 12:27:26

回答

0

你应该功能绑定到一个onchange事件您<p:selectOneMenu>的,看看所需的选项的值应该打开的对话框中,在这种情况下,触发dialog.open()的值相匹配。

。注意,Primefaces'组件包装一些div内<select>标签,并在中间组件输出所选择的<option>,因此到隐藏<select>元素事件的附件将不工作。另一方面,例如,JSF <h:selectOneMenu>标记呈现<select>元素,因此绑定到onchange的行为将触发所需的行为。

的观点:

<h:form id="form"> 
    <p:selectOneMenu value="#{buyerInProcessBean.subject}" id="buyerResponseId" onchange="changeEvent(this)"> 
     <f:selectItems value="#{buyerInProcessBean.subjectMap[trans.decisionrule.ruleId]}" 
         var="subject" itemLabel="#{subject}" itemValue="#{subject}" /> 
     <f:selectItem itemLabel="Other" itemValue="Other" /> 
    </p:selectOneMenu> 
</h:form> 
<p:dialog widgetVar="dialog"> 
    <h:outputText value="Additional Data" /> 
</p:dialog> 

中的JavaScript:

function changeEvent(element) { 
    var val = $(element).find('option:selected').text(); 
    if(val === 'Other') { 
     dialog.show(); 
    } 
} 
+0

谢谢skuntsel,对于很好的解释 – Sagar 2013-03-18 06:07:09

+0

不客气。 – skuntsel 2013-03-18 06:26:15

相关问题