HTML форма только для чтения SELECT tag / input - PullRequest
517 голосов
/ 15 декабря 2008

Согласно спецификациям HTML, тег select в HTML не имеет атрибута readonly, только атрибут disabled. Поэтому, если вы хотите, чтобы пользователь не мог изменить выпадающий список, вы должны использовать disabled.

Единственная проблема заключается в том, что отключенные вводы HTML-форм не включаются в данные POST / GET.

Как лучше всего эмулировать атрибут readonly для тега select и получать данные POST?

Ответы [ 37 ]

2 голосов
/ 09 августа 2011

Я решил это с помощью jquery:

      $("select.myselect").bind("focus", function(){
        if($(this).hasClass('readonly'))
        {
          $(this).blur();   
          return;
        }
      });
1 голос
/ 04 сентября 2013

Просто удалите отключенный атрибут перед отправкой формы.

    $('form').submit(function () {
        $("#Id_Unidade").attr("disabled", false);
    });
1 голос
/ 25 ноября 2011

HTML-решение:

<select onfocus="this.blur();">

JavaScript:

selectElement.addEventListener("focus", selectElement.blur, true); selectElement.attachEvent("focus", selectElement.blur); //thanks, IE

удалить:

selectElement.removeEventListener("focus", selectElement.blur, true); selectElement.detachEvent("focus", selectElement.blur); //thanks, IE

edit: добавлены методы удаления

1 голос
/ 15 декабря 2008

Вместо самого выбора можно отключить все параметры, кроме выбранного в данный момент. Это дает вид рабочего раскрывающегося списка, но только допустимая опция является допустимым выбором.

1 голос
/ 04 ноября 2015
<select id="case_reason" name="case_reason" disabled="disabled">

disabled="disabled" -> получит ваше значение из базы данных, покажет его в форме. readonly="readonly" -> вы можете изменить свое значение в selectbox, но ваше значение не может быть сохранено в вашей базе данных.

0 голосов
/ 25 октября 2011

Ниже сработало у меня:

$('select[name=country]').attr("disabled", "disabled"); 
0 голосов
/ 19 июня 2013

В опции вы можете использовать disabled="disabled" вместо самого выбора

0 голосов
/ 15 декабря 2008

Если выбранное раскрывающееся меню доступно только для чтения с момента рождения и не требует изменений, возможно, вам следует использовать другой элемент управления вместо этого? Как простой <div> (плюс скрытое поле формы) или <input type="text">?

Добавлено: Если раскрывающийся список не всегда доступен только для чтения, а JavaScript используется для его включения / отключения, то это все же решение - просто измените DOM на лету.

0 голосов
/ 17 ноября 2015

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

Я говорю логически, потому что это похоже на: «Я должен отобразить значение для пользователя»

Независимо от того, происходит ли значение из тега выбора, оно все равно является единственным значением и не может быть изменено (только чтение).

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

Затем, когда вам нужно отобразить это значение, вы должны поместить его в «текстовое поле только для чтения».

То же самое для множественного выбора, который становится списком значений (выбранное значение), только для чтения

Я использую «текст», потому что тэгу только для чтения не нужен атрибут «тип». Приветствия

0 голосов
/ 15 декабря 2014

очень просто. Первое значение магазина в переменной. Затем при изменении события установите значение сохраненной переменной, которая содержит начальное значение

У меня есть чье имя отображает. Тогда мой код будет следующим:

$("document").ready(function(){ 
    var mapping=$("select[name=mapping]").val();
    $("select[name=mapping]").change(function(){
        $("select[name=mapping]").val(mapping);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...