Ограничить выбор опции SELECT без отключения поля - PullRequest
6 голосов
/ 04 сентября 2008

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

По причинам, связанным с пользовательским интерфейсом, я бы хотел сделать это без использования атрибута disabled = true. Я попытался использовать onmousedown, onfocus, onclick и установить размытие или возврат каждого, но безуспешно.

Можно ли это сделать, или я пытаюсь сделать невозможное?

Ответы [ 6 ]

8 голосов
/ 04 сентября 2008

Я знаю, вы упомянули, что не хотите, но на самом деле я думаю, что использование атрибута disabled - лучшее решение:

<select multiple="multiple">
    <option value="volvo" selected="true" disabled="disabled">Volvo</option>
    <option value="saab" disabled="disabled">Saab</option>
    <option value="opel" disabled="disabled">Opel</option>
    <option value="audi" disabled="disabled">Audi</option>
</select>

Если необходимо, вы всегда можете указать select a class и стилизовать его с помощью CSS. Это решение будет работать во всех браузерах независимо от возможностей сценариев.

2 голосов
/ 04 сентября 2008

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

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

  1. «Смотри, окно выбора вариантов».
  2. нажмите
  3. «Хм, почему это не сработало?»
  4. нажмите
  5. нажмите !
  6. "Эта глупая вещь сломана, я никогда не вернусь сюда."

Если вы поменяете выделенный текст на HTML, он достигнет той же цели. Это довольно простая задача для большинства основных структур Javascript.

2 голосов
/ 04 сентября 2008

Не могли бы вы сделать это с событием onchange?

<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">
0 голосов
/ 15 марта 2018

Недавно появилось новое дополнение к CSS3, которое 95% совместимо со всеми текущими браузерами, кроме Opera Mini, и называется pointer-events. Проще говоря, вы можете «отключить» действие по умолчанию для SELECT или любого другого элемента и при этом иметь возможность выполнять определенные события для него ...

Вы можете просмотреть статью Криса Койера на них по адресу , введите описание ссылки здесь .

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

0 голосов
/ 07 февраля 2013

Попробуйте этот триггер.

<select multiple onchange="this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>
0 голосов
/ 04 сентября 2008

@ Джек & @ 17 из 26, хорошая точка зрения, но конечный пользователь будет ожидать, что поле выбора будет отключено, чтобы не возникало путаницы.

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

Приложение, которое будет использовать это, должно будет отключить выбор параметров, и существует требование, чтобы «заблокированный» элемент управления по-прежнему сохранял внешний вид обычных элементов управления формы.

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