Twitter bootstrap select readonly still able to change options

时间:2015-09-29 14:38:18

标签: jquery css twitter-bootstrap twitter-bootstrap-3 yii2

I have a bootstrap select with readonly="true" but I can still change the selected option.

I need the disabled="true" behavior, but when I use this the select is not submitted.

I need a combination of the 2, the selected option can not be changed but the select has to be submitted.

I could use hidden fields, but I was hoping for an easier solution.

3 个答案:

答案 0 :(得分:8)

我遇到了类似的问题,我所做的是当触发表单onsubmit事件时删除已禁用的属性,因为浏览器不会将禁用的属性发布回服务器。

$('form').submit(function () { $('[disabled]').removeAttr('disabled'); })

正如您所提到的,我找到的唯一其他选项是找到隐藏输入的值。

答案 1 :(得分:6)

另一种可能性是使用带有下拉列表的选择替换,应该可以禁用下拉列表但仍然提交隐藏的选择元素的值。 但是你也可以使用隐藏的字段......

或者你确实添加了一个带有所选值的隐藏字段,以防select元素被禁用。

<input type="hidden" name="whatever">
<select name="whatever">

如果隐藏字段与select具有相同的名称,则select的选定值应覆盖隐藏字段的提交值(例如,当使用js动态启用选择字段时)。如果禁用选择,则发送隐藏字段的值。 不确定首先提交的内容的顺序。

$(document).ready(function(){$('select option:not(:selected)').attr('disabled',true);});

此解决方案也应该有效(至少启用了js)。它禁用每个未选择的选项。因此,选择的选项已提交,无法更改。

  

有一个类似且已经回答的问题html-form-readonly-select-tag-input

答案 2 :(得分:1)

在页面加载时将禁用添加到只读

xjc -p SolaceSempRequest semp-rpc-soltr.xsd -b semp-rpc-soltr-jaxb-bindings.xsd

提交前删除已禁用

$('[readonly]').prop( "disabled", true );

来自Jquery doc的注释:

  

从jQuery 1.6开始,.attr()方法为属性返回undefined   尚未设定。检索和更改DOM属性,例如   选中,选中或禁用表单元素的状态,使用   .prop()方法。