Ограничить выбор опции ВЫБОРА без отключения поля

StackOverflow https://stackoverflow.com/questions/43874

Вопрос

У меня есть поле ВЫБОРА с множественным выбором, значение которого я не хочу, чтобы конечный пользователь мог изменять.

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

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

Это было полезно?

Решение

Я знаю, вы упомянули, что не хотите этого делать, но я действительно думаю, что использование 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.Это решение будет работать во всех браузерах, независимо от возможностей написания сценариев.

Другие советы

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

<select onfocus="this.oldIndex=this.selectedIndex" onchange="this.selectedIndex=this.oldIndex">

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

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

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

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

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

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

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

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

<select multiple onchange="this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top