Библиотека iziToast поддерживает создание
интерактивных уведомлений с полями ввода, что позволяет пользователю
напрямую взаимодействовать с уведомлением без необходимости перехода на
отдельную страницу или модальное окно. Основной механизм реализации
полей ввода в iziToast заключается в использовании параметра
inputs, который принимает массив объектов, описывающих
каждый элемент формы.
Каждое поле ввода описывается объектом со следующими ключевыми свойствами:
text,
password, email, number,
textarea, select).select, где каждый объект имеет label и
value.Пример создания уведомления с двумя полями ввода:
iziToast.show({
title: 'Вход в систему',
message: 'Введите логин и пароль',
inputs: [
['<input type="text" placeholder="Логин" id="username">', 'focus'],
['<input type="password" placeholder="Пароль" id="password">', '']
],
buttons: [
['<button>Войти</button>', function (instance, toast) {
let username = document.getElementById('username').value;
let password = document.getElementById('password').value;
console.log('Логин:', username, 'Пароль:', password);
instance.hide({transitionOut: 'fadeOut'});
}, true]
]
});
Для удобства пользователя можно задавать начальный фокус на
определённое поле. В массиве inputs второй элемент
подмассива отвечает за атрибут фокуса:
'focus' – поле получает фокус при отображении
уведомления.'' – поле отображается без автоматического фокуса.Кроме того, к каждому полю ввода можно привязывать стандартные
события JavaScript, такие как input, change
или keydown, напрямую через DOM-методы после генерации
уведомления.
Для проверки корректности введённых данных чаще всего используется
событие нажатия на кнопку уведомления. Доступ к полям осуществляется
через document.getElementById по id.
Простейшая проверка на заполнение выглядит так:
buttons: [
['<button>Отправить</button>', function (instance, toast) {
let email = document.getElementById('email').value;
if (!email) {
iziToast.error({message: 'Поле Email не может быть пустым'});
return false;
}
instance.hide({transitionOut: 'fadeOut'});
}, true]
]
select и
textareaДля создания выпадающих списков используется тег
<select> с опциями:
inputs: [
['<select id="role"><option value="user">Пользователь</option><option value="admin">Администратор</option></select>', 'focus']
]
Для многострочного текста применяют
<textarea>:
inputs: [
['<textarea id="comments" placeholder="Ваши комментарии"></textarea>', 'focus']
]
Каждое поле можно стилизовать через класс CSS, передаваемый в объекте
class. Пример:
['<input type="text" id="name" class="izi-input-custom" placeholder="Имя">', 'focus']
Где .izi-input-custom может содержать любые свойства
CSS, например:
.izi-input-custom {
border-radius: 5px;
border: 1px solid #ccc;
padding: 5px 10px;
width: 100%;
}
После создания уведомления с полями ввода можно изменять содержимое полей динамически через DOM:
document.getElementById('username').value = 'Новый логин';
Также возможна программная очистка полей после успешной отправки данных:
document.getElementById('username').value = '';
document.getElementById('password').value = '';
<form> невозможна. Все
действия должны обрабатываться через события кнопок или внешние
функции.Эти возможности позволяют интегрировать полнофункциональные интерактивные уведомления с вводом данных прямо в интерфейс приложения, сокращая количество модальных окон и улучшая пользовательский опыт.