h:selectmanyListbox 使“选择”选项在至少选择一个选项时无法选择

Posted

技术标签:

【中文标题】h:selectmanyListbox 使“选择”选项在至少选择一个选项时无法选择【英文标题】:h:selectmanyListbox make "choose" option unselectable when at least one option is selected 【发布时间】: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。当然。我已经编辑了我的问题。谢谢 【参考方案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 属性。

另见:

Best way to add a "nothing selected" option to a selectOneMenu in JSF

【讨论】:

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

以上是关于h:selectmanyListbox 使“选择”选项在至少选择一个选项时无法选择的主要内容,如果未能解决你的问题,请参考以下文章

<f:selectItems> 未在 <h:selectManyListbox> 中呈现

JSF selectManyListbox 显示值绑定错误

DataGridView:如何使某些单元格无法选择?

使 Kendo Datepicker 只读但也可选择

如何使用 pixmap 和 Qlabel 使图像可选择?

如何使已选择的选项不显示在另一个选择选项下拉 JAVASCRIPT/ANGULARJs