Twitter bootstrap选择readonly仍然能够更改选项

Rub*_*ben 14 css jquery twitter-bootstrap yii2 twitter-bootstrap-3

我有一个bootstrap选择,readonly="true"但我仍然可以更改所选的选项.

我需要这个disabled="true"行为,但是当我使用它时,select不会被提交.

我需要2的组合,所选的选项无法更改,但必须提交选择.

我可以使用隐藏字段,但我希望有一个更简单的解决方案.

Sea*_*ell 9

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

$('form').submit(function () { $('[disabled]').removeAttr('disabled'); })
Run Code Online (Sandbox Code Playgroud)

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


BHo*_*oft 6

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

或者,如果禁用了select元素,您确实添加了具有所选值的隐藏字段.

<input type="hidden" name="whatever">
<select name="whatever">
Run Code Online (Sandbox Code Playgroud)

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

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

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

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