Блокировка HTML выбора элемента, разрешить отправку значения при отправке - PullRequest
5 голосов
/ 08 апреля 2010

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

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

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

Я бы предпочел не включать этот / все элементы при нажатии кнопки отправки.

Как я могу заблокировать ввод, сохраняя выбранную опцию и передавая это значение целевому сценарию? Я бы предпочел решение, отличное от JavaScript, если это возможно, но при необходимости мы запускаем jQuery 1.4.2, чтобы его можно было использовать.

Редактировать

Я пытался использовать атрибут readonly с небольшим успехом, вот код jQuery, который я использую:

$('.abc').each(function(element) {
    $(this).attr('readonly','readonly');
});

При проверке элемента с помощью Firebug атрибут readonly был установлен, но я все еще могу изменить значение в поле выбора?!

Ответы [ 5 ]

6 голосов
/ 08 апреля 2010

Это работает:

$('.abc :not(:selected)').attr('disabled','disabled');

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

2 голосов
/ 29 сентября 2014

Элемент не принимает атрибут readonly. Readonly - это обертка, которая исправляет это.
Попробуйте это:
https://github.com/haggen/readonly

2 голосов
/ 19 апреля 2013

отлично работает

<select disabled="true">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">thre</option>
</select>
2 голосов
/ 08 апреля 2010

Добавьте скрытое поле к вашей форме и при отправке возьмите значение из выбора и поместите его в значение скрытого поля

Согласно спецификации HTML, readonly не поддерживается тегом select

1 голос
/ 08 апреля 2010

«select» не имеет атрибута «только для чтения». Имеет только отключенный атрибут.

http://www.w3schools.com/TAGS/att_select_disabled.asp

Так что ваш лучший лучший это:

$('.abc').each(function(element) {
    $(this).attr('disabled','disabled');
});

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...