(Прежде чем списывать это как дубликат различных других вопросов такого рода, или как на них уже был дан ответ, пожалуйста, внимательно прочитайте.)
Я хотел бы сделать мой HTML5 множественный выбор параметры, поэтому они никогда не требуют удержания Ctrl, чтобы выбрать / отменить их выбор, не затрагивая другие параметры. (Это для Perl веб-приложения, над которым я работал годами, и недавно меня попросили сделать несколько блоков выбора менее подверженными несчастным случаям, то есть пользователи (некоторые из которых довольно старые) теряют все остальные выбранные варианты, когда они нажимают один, возможно, не замечая.)
Потратив часы на тестирование различных решений, которые я нашел в Интернете для этого, я не нашел ни одного, который бы делал то, что я хотел, например:
- Я бы предпочел не использовать jQuery, так как он мне пока не нужен в этом приложении, которое я хотел бы сохранить как можно более легким (и W3Schools говорит " после *" 1038 * Версия 5 (2009), большинство утилит jQuery могут быть решены с помощью нескольких строк стандартного JavaScript ").
- Работа с простыми HTML элементами управления множественным выбором, и не требуется (или минимальное) изменение разметки HTML.
- Любые отключенные
<option>
s (которые могут быть предварительно выбраны при загрузке страницы) не должны выбираться / не выбираться нажатием на них (или с помощью щелкнув по любой другой опции). * 1 015 * - Нажатие на опцию не должно приводить к автоматической прокрутке списка опций, как это происходит с некоторыми решениями.
- Выбранные опции должны отображаться традиционным синим (или аналогичным, а не серым) цветом Chrome по крайней мере.
- Выбранные элементы должны (предпочтительно) быть голубыми даже до щелчка по полю выбора, по крайней мере, в Chrome. (Это происходит по умолчанию с традиционными опциями множественного выбора в Firefox, но не Chrome.)
Одно из решений, на которое я смотрел, это Как избежать необходимости для ctrl-click в окне множественного выбора, используя Javascript? (среди прочих на этой странице) и его Fiddle (http://jsfiddle.net/xQqbR/1022). Это хорошее начало, но оно не отвечает моим требованиям 1, 3 и 6. Я вижу, что различные комментаторы указывали, что (и как) jQuery не должно требоваться для этого, но после попытки того, что они предложили, я не смог не получается, и я почти не знаю JavaScript, чтобы решить это сам.
Вот такая разметка, с которой я имею дело:
<select multiple size=3>
<option>Option 1</option>
<option>Option 2</option>
<option disabled>Option 3 (disabled)</option>
<option>Option 4</option>
<option>Option 5</option>
<option>Option 6</option>
<option selected>Option 7 (selected)</option>
<option disabled selected>Option 8 (disabled+selected)</option>
</select>
Заранее спасибо за ваше время и опыт.