Richfaces:限制rich:comboBox到值列表的值

时间:2012-08-21 10:30:49

标签: jsf richfaces

我的页面中有以下简单的组合框。

<rich:comboBox value="#{groupConfig.group}"
               styleClass="userCombo"
               filterNewValues="false"
               directInputSuggestions="true">
  <f:selectItems value="#{
    workflowConfigCtrl.groupsFor(groupConfig,appNode.approvalTier)
  }" />
</rich:comboBox>

它的工作非常出色,但遗憾的是它允许输入不属于suggestionList的值(这是有意义的,因为我启用了直接文本输入。

我希望启用直接文本输入,以便用户可以使用建议列表快速过滤(来自可包含数百个组的巨大组列表)。

同时我不希望用户输入不在列表中的值。当前方法检查用户何时保存整个表单。有没有办法提前限制它?

我尝试使用javascript onblur = handler,但我找不到在dom中保存selectItem列表的位置。

2 个答案:

答案 0 :(得分:3)

您可以使用

在javascript中访问comboBox列表
#{rich:component('myComboBoxId')}.comboList.itemsText

和/或

#{rich:component('myComboBoxId')}.comboList.itemsValue

然后使用jQuery.inArray()验证该项目是否在列表中。

答案 1 :(得分:2)

您应该能够通过在以下示例中指定其ID来访问DOM中的此组合框。

<rich:comboBox value="#{groupConfig.group}"
               id="UniqueID"
               styleClass="userCombo"
               filterNewValues="false"
               directInputSuggestions="true">
  <f:selectItems value="#{
    workflowConfigCtrl.groupsFor(groupConfig,appNode.approvalTier)
  }" />
</rich:comboBox>

然后,您可以使用document.getElementById("UniqueID")在DOM中访问它。