对于HTML输入,是否存在HTML选择字段的属性或技术等同于readOnly="true"
?
我有一个表单选择字段我想要禁用,但在发布表单时仍会传递。如果这是一个HTML输入,我会做这样的事情
$('select_id').setAttribute('readOnly', 'true');
并且浏览器会将该字段呈现为不可编辑的,但它的值仍将传递给后端。我想要一个类似的HTML选择,但做以下
$('#select_id').setAttribute('readOnly', 'true');
不起作用。该属性已成功添加到DOM,但浏览器仍将其呈现为可选。
我意识到我可以做以下事情
$('#input_id').disabled();
但是当某个字段已禁用时,其值不会传递到后端。
我想要一种方法来禁用这个选择字段,但仍然传递给后端。
(示例使用Prototype JS,但我对任何通用解决方案感兴趣)
答案 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();
});