如何使下拉菜单无法选择?

4

如何使<h:selectOneMenu>下拉列表不可选择?

这不是使用disabled来实现的。我只想使下拉列表选项无法选择,并以不同(非活动)的样式类显示。

我该怎么做?通过JSF组件属性、CSS或JavaScript可以实现吗?


“unchangeable/unselectable”这个词是什么意思?是指单击它时没有任何反应(没有下拉菜单),还是选定一个值后它不会显示,或者是在提交时没有任何效果? - Zeemee
@Mulmoth "不可更改/不可选择" 意味着当单击它时什么也不会发生(没有下拉菜单)。 - AKZap
那么“disabled”属性就是唯一的选择。 - Zeemee
3个回答

15
<asp:DropDownList ID="ddlName" runat="server" style="pointer-events: none; cursor: default;">
</asp:DropDownList>

style="pointer-events: none; cursor: default;"添加为DropDownListstyle属性。这样会成功运行,我已经尝试过。


2
使用jQuery: $('#DropdownID').css({"pointer-events": "none", "cursor": "default"}); - Hugo

3

如果我理解正确,你所需做的就是使用disabled属性。

因此,如果您有一个这样的选择标签:

<select>
  <option>Value</option>
  <option>Value</option>
  <option>Value</option>
</select>

只需将其更改为以下内容:
<select disabled>
  <option>Value</option>
  <option>Value</option>
  <option>Value</option>
</select>

有些文档类型要求所有属性都必须有值才能有效。在这种情况下,您可以使用disabled="true"替代。


如果文档类型需要一个值,那么应该使用 disabled="disabled",而不是其他的值吗? - gen_Eric

1
根据这个答案,一些浏览器允许更改禁用组件的样式(非IE),而另一些则不允许(IE)。然而,该答案已经有3年之久 - 对于浏览器来说是很长时间了。因此,您可以尝试以下解决方案:
<h:selectOneMenu disabled="true" style="..." ...>

...并使用不同的浏览器检查结果。

或者,您可以使用readonly属性:

<h:selectOneMenu readonly="true" style="..." ...>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接