Могут ли несколько элементов HTML получать фокус одновременно?

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

Я думаю об адаптации события onfocus. Возможно ли, чтобы несколько элементов HTML одновременно получали фокус?

Не вводы, а DIV, поэтому курсор мне не нужен. Я просто хочу, чтобы несколько DIV были «выбраны» отдельно от других, окрашены по-разному, чтобы имитировать выбор нескольких элементов.


person Olaseni    schedule 10.06.2010    source источник
comment
почему вы хотите сделать это с несколькими onfocus !? просто вызывайте все, что вам нужно, после одного события onfocus   -  person Luca Filosofi    schedule 10.06.2010
comment
он хочет, чтобы курсор мигал во всех 10 вводах текста, да ‹/сарказм›   -  person Dan Heberden    schedule 10.06.2010
comment
Не обязательно вводы, а DIV, поэтому мне не нужен курсор.   -  person Olaseni    schedule 10.06.2010
comment
Только сейчас увидел твой комментарий. Как div может сфокусироваться? onfocus не является событием div w3schools.com/tags/tag_div.asp   -  person nebkat    schedule 10.06.2010
comment
@Neb - В HTML 4 вы можете правильно назначить прослушиватель событий фокуса div через javascript. В HTML5 onfocus является допустимым атрибутом события для элемента div. Точно так же добавьте атрибут tabIndex=0, чтобы добавить div к порядку табуляции.   -  person Alohci    schedule 10.06.2010


Ответы (4)


Нет, вы можете сосредоточиться только на одном элементе за раз.

person Babiker    schedule 10.06.2010
comment
Да, мне пришлось отредактировать его до того, как были опубликованы какие-либо другие ответы, чтобы не возникло подозрений в плагиате;) - person Babiker; 10.06.2010
comment
Интересно, есть ли какие-либо документы, подтверждающие это? - person nick722; 31.05.2021

Как указано в других ответах, только 1 элемент может иметь фокус в любой момент времени. Вместо этого вы можете добавить класс к каждому из «выбранных» элементов.

Простой пример (с использованием yui):

 <style type="text/css">
     .selectedItem{border: 2px dashed #c0ffee;}
 </style>
...
<ul class='listContainer'>
     <li> ... </li>
     <li> ... </li>
     <li> ... </li>
</ul>
...
<script type="text/javascript">
     Y.one('.listContainer').delegate(
         'click', 
         function(e){ e.currentTarget.toggleClass('selectedItem');}, 
         'li'
     );
</script>
person unomi    schedule 10.06.2010

Нет. Вся суть фокуса в том, что выделен один элемент (как в "прожекторе" для него). Но если вы хотите текстовые поля с двойным написанием, используйте это

<input type="text" name="firstbox" onchange="firstbox.value = secondbox.value; return true;">
<input type="text" name="secondbox">
person nebkat    schedule 10.06.2010

Я так не думаю. Если бы два текстовых поля были в фокусе одновременно, какое из них получило бы ввод? Вы можете «симулировать» это (одно поле имеет фокус, а код «дублирует» значения), но только один элемент за раз может быть «фокусом».

person liquidleaf    schedule 10.06.2010