Twitter bootstrap выберите readonly все еще в состоянии изменить параметры

у меня есть bootstrap select с readonly="true" но я все еще могу изменить выбранную опцию.

мне нужно disabled="true" поведение, но когда я использую это, select не передается.

мне нужна комбинация 2, выбранная опция не может быть изменена, но выбор должен быть отправлен.

Я могу использовать скрытые поля, но я надеялся на более простое решение.

3 ответов


другой возможностью может быть использование замены select с раскрывающимися списками там должно быть возможно отключить раскрывающийся список, но все же представить значение скрытого элемента select. Но тогда вы также можете использовать скрытые поля...

или вы действительно добавляете скрытое поле с выбранным значением, если элемент select отключен.

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

Если скрытое поле имеет то же имя, что и select, выбранное значение select должно перезаписать отправленное значение скрытого поля (например, когда поле select динамически включено с помощью js). И если select отключен, отправляется значение скрытого поля. Не уверен насчет порядка, что подается первым.

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

это решение также должно работать (по крайней мере, с включенным js). Он отключает каждую не выбранную опцию. И поэтому выбранная опция отправлена и не может быть изменена.

есть аналогичный и уже ответ на вопрос html-form-только для чтения-select-tag-input


я столкнулся с аналогичной проблемой, и то, что я делаю, когда запускается событие формы onsubmit, удаляет отключенные атрибуты, поскольку браузер не будет отправлять отключенные атрибуты обратно на сервер.

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

Как вы упомянули, единственный другой вариант, который я нашел, - найти значения для скрытых входов.


в pageload добавить отключено только для чтения

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

перед отправкой удалить отключено

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

Примечание от jQuery doc:

по состоянию на jQuery 1.6, the .attr () метод возвращает undefined для атрибутов это не было установлено. Получение и изменение свойств DOM, таких как проверенное, выбранное или отключенное состояние элементов формы .опора() метод.