HTML选择元素的readOnly等效项

时间:2012-08-15 19:59:42

标签: javascript html dom prototypejs

对于HTML输入,是否存在HTML选择字段的属性或技术等同于readOnly="true"

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

$('select_id').setAttribute('readOnly', 'true');

并且浏览器会将该字段呈现为不可编辑的,但它的值仍将传递给后端。我想要一个类似的HTML选择,但做以下

$('#select_id').setAttribute('readOnly', 'true');

不起作用。该属性已成功添加到DOM,但浏览器仍将其呈现为可选。

我意识到我可以做以下事情

$('#input_id').disabled();

但是当某个字段已禁用时,其值不会传递到后端。

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

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

2 个答案:

答案 0 :(得分:22)

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

<select>
<option disabled="disabled">1</option>
<option selected="selected">2</option>
<option disabled="disabled">3</option>
</select>

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

答案 1 :(得分:3)

添加禁用类:

.disabled{
   color: grey;
}

如果当前使用类使用防止焦点和单击时的默认值,并且dbl单击:

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