在不禁用字段的情况下限制对SELECT选项的选择

时间:2020-03-05 18:47:38  来源:igfitidea点击:

我有一个多选SELECT字段,我不希望最终用户能够更改其值。

由于用户界面的原因,我希望能够在不使用disable =" true"属性的情况下执行此操作。我尝试过使用onmousedown,onfocus,onclick并将它们设置为模糊或者返回false,但没有成功。

可以做到这一点,还是我试图做到不可能?

解决方案

回答

你能通过一个" onchange"事件来做到吗?

<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">

回答

最好的选择是交换选择框中的选项。如果我们在该框中只有一个答案,则可以单击它无关紧要。

但是,我将尝试寻找另一种方式来执行此操作,因为这似乎会使用户感到沮丧。想象一下这个用户场景:

  • "看,一个选择框。"
  • 点击
  • "嗯,那为什么不起作用?"
  • 点击
  • 点击!
  • "这个愚蠢的东西坏了,我再也不会回来了。"

如果将select替换为HTML文本,则可以实现相同的目标。对于大多数主要的Javascript框架而言,这是一项相当简单的任务。

回答

我知道我们提到我们不想这样做,但实际上我认为使用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赋予class并使用CSS对其进行样式设置。不管脚本功能如何,该解决方案都将在所有浏览器中运行。

回答

@Hyman&@ 17 of 26,很好,但是最终用户将期望禁用选择框,以免混淆不会成为问题。

我应该更清楚为什么不能仅仅禁用控件。

将要使用此功能的应用程序将需要禁用对选项的选择,并且要求"锁定"控件仍保持正常表单控件的外观。