【问题标题】:h:selectmanyListbox make "choose" option unselectable when at least one option is selectedh:selectmanyListbox 使“选择”选项在至少选择一个选项时无法选择
【发布时间】:2015-06-18 07:44:22
【问题描述】:

是否可以在<h:selectManyListbox> 中有一个默认选项,如“--choose--”,当没有选择选项时可以选择它。 When the some value is chosen, then it must be unselectable.

<h:selectManyListbox value="#{bean.value}"
        class="form-control">
        <f:selectItems value="#{bean.dropdownValues}" var="value" itemLabel="#{value}" itemValue="#{value}"/>            
</h:selectManyListbox>

【问题讨论】:

  • @BalusC。当然。我已经编辑了我的问题。谢谢

标签: jsf jsf-2 selectmanylistbox


【解决方案1】:

只需将其添加为另一个 &lt;f:selectItem&gt; 并请求一些 JavaScript 帮助以在更改事件期间选择任何值时禁用它。

<h:selectManyListbox ... onchange="options[0].disabled=!!value">
    <f:selectItem itemLabel="--choose--" itemValue="#{null}" />
    <f:selectItems ... />
</h:selectManyListbox>

options[0] 指的是选择元素的第一个选项。 !!value 基本上将选中的项目值转换为boolean(当它不为空/null 时为true),适用于disabled 属性。

另见:

【讨论】:

  • 感谢您的回答。我尝试了上述解决方案。但是一旦我选择了有效选项,我就无法选择 --choose-- 选项。我有什么遗漏吗?
  • 但是你明确提到了“那么它就不能选择默认的虚拟值了。”我理解错了吗?
  • 很抱歉给您带来了困惑。我的意思是,当用户选择任何有效选项时,默认选项应该是可见的。用户在取消选择任何其他有效选项之前不能选择虚拟选项。考虑到列表框不是强制性的。我想离开下拉菜单而不选择任何选项。
  • 因此,使其始终无法选择(只需使用itemDisabled="true")也不是一种选择?
  • 是的,正确。字段是非强制性的,用户可以随时选择有效选项或假人离开
猜你喜欢
  • 1970-01-01
  • 2018-05-11
  • 2015-02-15
  • 2018-04-01
  • 2020-12-28
  • 1970-01-01
  • 2018-06-29
  • 2016-01-21
  • 1970-01-01
相关资源
最近更新 更多