Featherlight — это легковесная библиотека для создания модальных окон
на JavaScript и jQuery. Одним из удобных инструментов управления
поведением модальных окон является использование событийных коллбеков.
Параметр onKeyUp позволяет выполнять определённые действия
при отпускании клавиши на клавиатуре, когда модальное окно активно.
onKeyUp используется для привязки пользовательских
функций к событию keyup, которое возникает каждый раз,
когда пользователь отпускает клавишу. Этот коллбек особенно полезен для
реализации:
Esc.В Featherlight onKeyUp является опциональным параметром
при инициализации модального окна.
$.featherlight({
onKeyUp: function(event) {
// Действия при отпускании клавиши
}
});
Параметр event содержит стандартный объект события
KeyboardEvent. Через него можно получить код клавиши
(event.key или event.keyCode), статус
модификаторов (event.shiftKey, event.ctrlKey)
и другую информацию.
Закрытие окна по клавише Esc
$.featherlight({
content: '<p>Нажмите Esc для закрытия</p>',
onKeyUp: function(event) {
if (event.key === 'Escape') {
this.close();
}
}
});
В данном примере при отпускании клавиши Esc вызывается
метод close() объекта модального окна, что приводит к его
закрытию.
Навигация между элементами модального окна
$.featherlight({
content: '<ul><li>Первый</li><li>Второй</li><li>Третий</li></ul>',
onKeyUp: function(event) {
const items = this.$content.find('li');
let current = items.filter('.active');
let index = items.index(current);
if(event.key === 'ArrowDown') {
current.removeClass('active');
items.eq((index + 1) % items.length).addClass('active');
}
if(event.key === 'ArrowUp') {
current.removeClass('active');
items.eq((index - 1 + items.length) % items.length).addClass('active');
}
}
});
В этом примере при отпускании стрелок вверх и вниз меняется активный
элемент списка. Featherlight обеспечивает удобный доступ к содержимому
окна через this.$content.
onKeyUp срабатывает только тогда, когда окно активно.
Если несколько окон открыты одновременно, обработка событий происходит
для верхнего окна.this внутри функции ссылается на объект
Featherlight, что позволяет использовать методы open(),
close(), $content и другие свойства.keyup можно использовать совместно с другими
коллбеками (afterOpen, beforeClose) для более
сложного поведения.Параметр onKeyUp может быть динамическим, переданным при
вызове метода $.featherlight() на конкретном элементе. Это
позволяет создавать уникальное поведение для каждого окна:
$('#openModal').on('click', function() {
$.featherlight('<p>Custom onKeyUp</p>', {
onKeyUp: function(event) {
if(event.key === 'Enter') {
alert('Enter нажата внутри модального окна');
}
}
});
});
Таким образом, можно назначать разные действия для разных модальных окон без изменения глобальной конфигурации.
onKeyUp может использоваться совместно с
onKeyDown и onKeyPress для реализации сложной
логики ввода. Например, можно отлавливать сочетания клавиш и
предотвращать стандартное поведение браузера:
$.featherlight({
onKeyUp: function(event) {
if(event.ctrlKey && event.key === 's') {
event.preventDefault();
console.log('Сочетание Ctrl+S обработано в модальном окне');
}
}
});
event.preventDefault() предотвращает стандартное
действие браузера, такое как открытие диалогового окна сохранения
страницы.
onKeyUp — мощный инструмент для создания интерактивных и
управляемых модальных окон. Его преимущества:
Правильное использование onKeyUp делает интерфейсы более
доступными и удобными для пользователя, особенно в сценариях с
клавиатурной навигацией и горячими клавишами.