Ограничить выбор опции ВЫБОРА без отключения поля
-
09-06-2019 - |
Вопрос
У меня есть поле ВЫБОРА с множественным выбором, значение которого я не хочу, чтобы конечный пользователь мог изменять.
По соображениям пользовательского интерфейса я хотел бы иметь возможность делать это без использования атрибута 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">
Лучше всего было бы поменять местами параметры в поле выбора.Если у вас есть только один ответ в этом поле, не имеет значения, доступен ли он для просмотра.
Я бы, однако, попытался найти другой способ сделать это, поскольку кажется, что это вызовет разочарование у пользователя.Представьте себе этот пользовательский сценарий:
- "Смотри, поле выбора опций".
- щелчок
- "Хм, почему это не сработало?"
- щелчок
- щелчок!
- "Эта дурацкая штука сломана, я никогда сюда не вернусь".
Если вы замените 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
или любой другой элемент, и при этом иметь возможность выполнять над ним определенные события...
Вы можете ознакомиться со статьей Криса Койера о них по адресу введите описание ссылки здесь.
Это ближе к тому, что вы ищете?..Извините, что я не смог привести ни одного из своих собственных примеров кодирования...