Сосредоточиться на элемент ввода / якорь? - PullRequest
10 голосов
/ 15 февраля 2009

Я работаю над некоторым JavaScript, который требует тега, который может получить фокус. Я хотел бы иметь возможность использовать тег <div />, однако теги <div /> не могут получить фокус.

Похоже, что единственные элементы, которые могут получить фокус, - это теги <input /> и <a />. Есть ли другой способ позволить элементу получить фокус, который не является тегом <input /> или <a />?

Я не могу использовать теги <a /> или <input />, потому что мне нужно иметь возможность размещать содержимое внутри тега, чтобы ни один из этих тегов не работал, если только нет способа разрешить использование вложенных тегов <a />, хотя Я сомневаюсь в этом, поскольку идет вразрез со стандартом . Я пытаюсь найти способ, позволяющий тегу <div /> (или любому другому элементу контейнера) получить фокус.

Ответы [ 3 ]

11 голосов
/ 15 февраля 2009

Что вы подразумеваете под «можете получить фокус»? Любой элемент DOM может быть настроен на получение множества событий javascript, включая click events.

Или вы имеете в виду "можно вкладывать с помощью клавиатуры"? Если это так, и если вы не можете использовать тег a в качестве контейнера, попробуйте свойство tabindex для ваших элементов. Я не уверен, насколько он кроссбраузерен, но, по крайней мере, попробуйте, прежде чем писать интерфейс с вкладками в javascript самостоятельно.

0 голосов
/ 15 февраля 2009

В некотором роде обходной путь и не семантически правильный, но ...

a#foo { display: block; }
a#foo:hover { cursor: default; }

Затем используйте JavaScript, чтобы перехватить событие onClick на a#foo и вернуть false.

0 голосов
/ 15 февраля 2009

Закладки - это путь.

Начните свой контент с

<a href="#anchor">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...