Javascript HTML Select元素的只读等效项

Javascript HTML Select元素的只读等效项,javascript,html,dom,prototypejs,Javascript,Html,Dom,Prototypejs,HTML选择字段是否有一种属性或技术,相当于HTML输入的readOnly=“true” 我想禁用一个表单选择字段,但在发布表单时仍会传递该字段。如果这是一个HTML输入,我会这样做 $('select_id').setAttribute('readOnly', 'true'); 浏览器会将该字段呈现为不可编辑,但其值仍会传递到后端。我希望类似的HTML选择,但执行以下操作 $('#select_id').setAttribute('readOnly', 'true'); $('#input

HTML选择字段是否有一种属性或技术,相当于HTML输入的
readOnly=“true”

我想禁用一个表单选择字段,但在发布表单时仍会传递该字段。如果这是一个HTML输入,我会这样做

$('select_id').setAttribute('readOnly', 'true');
浏览器会将该字段呈现为不可编辑,但其值仍会传递到后端。我希望类似的HTML选择,但执行以下操作

$('#select_id').setAttribute('readOnly', 'true');
$('#input_id').disabled();
不起作用。该属性已成功添加到DOM中,但浏览器仍将其呈现为可选

我意识到我可以做到以下几点

$('#select_id').setAttribute('readOnly', 'true');
$('#input_id').disabled();
但是当一个字段被禁用时,它的值不会传递到后端

我想要一种方法来禁用这个选择字段,但仍然传递到后端


(示例使用Prototype JS,但我对任何通用解决方案都感兴趣)

禁用除所选选项以外的所有选项:


1.
2.
3.
这样,下拉列表仍然有效(并提交其值),但用户无法选择其他值。

添加禁用类:

.disabled{
   color: grey;
}
如果类存在,请在焦点和单击时使用“阻止默认值”,并在dbl单击时使用:

$('#el').bind('click dblclick focus').function(event){
   if ($(this).hasClass('disabled')) event.preventDefault();
});

不知道是谁投了反对票或者为什么,这似乎有效(至少在Chrome中,现在正在测试其他浏览器)@AlanStorm,这是一个地狱般的测试:))这个解决方案的问题是,用户仍然可以使用CTRL+Clicks取消选择选项值得注意的是,对于未来的谷歌来说,这个示例似乎使用了jQuery。