2013-03-16 84 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

相關問題