Управление фокусом, функция focus ()
BX.focus(node)
это «битриксовая» обёртка над нативным element.focus()
, которая бережно кросс-браузерно ставит курсор в нужное поле, автоматически прокручивает страницу до элемента и защищает вас от ошибок, если нода ещё не попала в DOM.
Зачем управлять фокусом вручную
- Удобство заполнения форм: сразу поставить курсор в первое поле
- Валидация: мигом перевести пользователя к первому ошибочному инпуту
- Доступность (a11y): обеспечить навигацию по клавиатуре и для скрин-ридеров
- UX-мелочи: открываем поп-ап — и фокус уже в поисковой строке, а не «где-то» на странице
BX.focus = function (node) {
// внутри — проверка на наличие элемента, вызов .focus() и авто-scrollIntoView при необходимости
}
Главное отличие от element.focus()
:
BX.focus
молча игнорирует попытку сфокусироваться наnull/undefined
- На старых IE и мобильных браузерах функция задействует костыли Bitrix Core, поэтому работает стабильнее
Практический пример
<div id="togglediv" class="btn">Фокус на t3</div>
<input id="t1" type="text" maxlength="20" value="t1" autofocus>
<input id="t2" type="text" maxlength="20" value="t2">
<input id="t3" type="text" maxlength="20" value="t3">
<style>
.btn{
cursor:pointer; padding:8px 16px; margin:12px auto; text-align:center;
background:#4c70ff; color:#fff; border-radius:6px; width:max-content;
}
</style>
<script>
BX.ready(function () {
BX.bind(BX('togglediv'), 'click', function () {
BX.focus(BX('t3'));
});
});
</script>