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






Могли бы вы сделать это с событием onchange?
<select onfocus = "this.oldIndex=this.selectedIndex" onchange = "this.selectedIndex=this.oldIndex">
Лучше всего поменять параметры в поле выбора. Если у вас есть только один ответ в этом поле, не имеет значения, является ли он интерактивным.
Однако я бы попытался найти другой способ сделать это, поскольку, похоже, это вызовет разочарование у пользователя. Представьте себе этот пользовательский сценарий:
Если вы поменяете выделение на текст HTML, он достигнет той же цели. Это довольно простая задача для большинства основных фреймворков Javascript.
Я знаю, что вы упомянули, что не хотите, но я действительно думаю, что использование атрибута 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>
При необходимости вы всегда можете присвоить selectclass и стилизовать его с помощью CSS. Это решение будет работать во всех браузерах независимо от возможностей написания сценариев.
Блин IE. Интересно, есть ли эквивалент для disabled = "disabled" для MS? Может быть, только чтение = "только чтение"?
Нет, нет. Они реализовали атрибут отключенного HTML4 в ie8 rc2 ПЕРВЫЙ РАЗ.
@Jack & @ 17 из 26, хороший аргумент, но конечный пользователь будет ожидать, что поле выбора будет отключено, так что путаница не будет проблемой.
Я должен был быть более ясным в том, почему я не мог просто отключить элемент управления.
Приложение, которое будет использовать это, должно будет отключить выбор параметров, и есть требование, чтобы «заблокированный» элемент управления по-прежнему сохранял внешний вид элементов управления нормальной формы.
Попробуйте этот триггер.
<select multiple onchange = "this.selectedIndex=this.selectedIndex">
<option>1</option>
<option>2</option>
</select>
Недавно появилось новое дополнение к CSS3 - 95% совместимость во всех текущих браузерах, кроме Opera Mini, которое называется pointer-events. Проще говоря, вы можете «отключить» действие по умолчанию на SELECT или любом другом элементе и по-прежнему иметь возможность выполнять на нем определенные события ...
Вы можете просмотреть статью Криса Койера о них на введите описание ссылки здесь.
Это ближе к тому, что вы ищете ... Извините, что я не смог предоставить ни одного из своих примеров кодирования ...
Хм, похоже, не работает в IE7. Я все еще могу их выбрать. В Firefox они отключены.