【问题标题】:Richfaces: limit rich:comboBox to values of the value listRichfaces:将 rich:comboBox 限制为值列表的值
【发布时间】:2012-08-16 16:31:53
【问题描述】:

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

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

它工作得非常好,但遗憾的是它允许输入不属于建议列表的值(这是有道理的,因为我启用了直接文本输入。

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

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

我尝试使用 javascript onblur= 处理程序来执行此操作,但在 dom 中找不到保存 selectItem 列表的位置。

【问题讨论】:

  • 你为什么不直接使用&lt;rich:suggestionbox&gt;
  • 我希望能够有一个下拉框来选择组,只有能够搜索和预过滤的快捷方式。使用文本字段和建议框不会自动产生这种情况(我可以附加一个按钮;好的。)但建议框也使用 ajax 而不是预呈现列表,我想我不希望在这种情况下出现滞后。跨度>
  • @user1442158 你能评论我给出的答案是否有用吗?
  • 当然,我周末休息了。

标签: jsf richfaces


【解决方案1】:

您可以使用 javascript 访问组合框列表

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

和/或

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

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

【讨论】:

  • 谢谢!这正是我一直在寻找和要求的。
【解决方案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 中访问它。

【讨论】:

  • 它很容易从 javascript 访问组合框(实际上是一个 )。但我需要访问由呈现建议/选择列表的丰富组件持有的 list ,但我还没有找到访问它的权限。所以是的,你访问输入元素是对的,但我问如何访问它的列表(技术上是 的javascript端)
猜你喜欢
  • 2014-04-28
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
相关资源
最近更新 更多