限制选择 SELECT 选项而不禁用该字段
-
09-06-2019 - |
题
我有一个多重选择 SELECT 字段,我不希望最终用户能够更改其值。
出于用户界面的原因,我希望能够在不使用disabled =“true”属性的情况下执行此操作。我尝试过使用 onmousedown、onfocus、onclick 并将每个设置为模糊或返回 false,但没有成功。
这可以做到还是我正在尝试做不可能的事情?
解决方案
我知道你提到过你不想这样做,但我实际上认为使用 disabled
属性是一个更好的解决方案:
<select multiple="multiple">
<option value="volvo" selected="true" disabled="disabled">Volvo</option>
<option value="saab" disabled="disabled">Saab</option>
<option value="opel" disabled="disabled">Opel</option>
<option value="audi" disabled="disabled">Audi</option>
</select>
如果有必要,您可以随时提供 select
A class
并使用 CSS 对其进行样式设置。无论脚本功能如何,该解决方案都适用于所有浏览器。
其他提示
你能用一个来做吗 onchange
事件?
<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">
最好的选择是交换选择框中的选项。如果该框中只有一个答案,则它是否可点击并不重要。
然而,我会尝试找到另一种方法来做到这一点,因为这似乎会给用户带来挫败感。想象一下这个用户场景:
- “看,一个选择框。”
- 点击
- “嗯,为什么没效果?”
- 点击
- 点击!
- “这个蠢东西已经坏了,我再也不会回到这里了。”
如果您将选择替换为 HTML 文本,则可以实现相同的目标。对于大多数主要的 Javascript 框架来说,这是一个相当简单的任务。
@Jack & @17 of 26,好点,但最终用户会期望禁用选择框,这样混乱就不会成为问题。
我应该更清楚为什么我不能禁用该控件。
将使用此功能的应用程序需要禁用选项的选择,并且要求“锁定”控件仍保持正常表单控件的外观和感觉。
试试这个触发器。
<select multiple onchange="this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>
不隶属于 StackOverflow