SweetAlert предоставляет возможность работы с радиокнопками (radio
buttons), что позволяет создавать интерактивные формы с несколькими
вариантами выбора. Эта функциональность полезна, когда необходимо
предоставить пользователю ограниченный набор опций, из которых он может
выбрать только одну. Работа с радиокнопками в SweetAlert базируется на
использовании параметра input с типом
radio.
Для создания модального окна с радиокнопками используется метод
Swal.fire(), в котором можно указать тип
input: 'radio' и задать список вариантов. Каждый вариант
будет представлен как радиокнопка, и пользователь сможет выбрать только
один из них.
Swal.fire({
title: 'Выберите опцию',
input: 'radio',
inputOptions: {
'option1': 'Вариант 1',
'option2': 'Вариант 2',
'option3': 'Вариант 3'
},
inputValidator: (value) => {
if (!value) {
return 'Выберите один из вариантов!';
}
}
});
В данном примере создается модальное окно с тремя радиокнопками,
каждая из которых имеет уникальное значение (option1, option2, option3).
Пользователь может выбрать только один из вариантов. Если пользователь
не выбрал вариант и попытался подтвердить выбор, сработает функция
inputValidator, которая вернет ошибку.
inputOptions – объект, в котором
задаются значения радиокнопок. Каждому значению можно присвоить строку,
которая будет отображаться пользователю.
inputOptions: {
'option1': 'Вариант 1',
'option2': 'Вариант 2',
'option3': 'Вариант 3'
}
В данном примере у нас три варианта, где ключи (option1, option2, option3) – это внутренние идентификаторы значений, а значения строк (Вариант 1, Вариант 2, Вариант 3) – то, что будет видно пользователю.
inputValue – задает выбранное
значение по умолчанию. Например, если необходимо, чтобы по умолчанию был
выбран второй вариант, можно использовать этот параметр:
inputValue: 'option2'inputValidator – функция для
проверки введенного значения или выбора пользователя. Она вызывается,
когда пользователь пытается подтвердить свой выбор, и если валидация не
пройдена, окно останется открытым, пока пользователь не сделает
выбор.
inputValidator: (value) => {
if (!value) {
return 'Выберите вариант!';
}
}После того как пользователь сделает выбор, выбранное значение можно получить через промис. В случае успеха промис вернет объект, содержащий выбранное значение. Пример обработки данных:
Swal.fire({
title: 'Выберите опцию',
input: 'radio',
inputOptions: {
'option1': 'Вариант 1',
'option2': 'Вариант 2',
'option3': 'Вариант 3'
}
}).then((result) => {
if (result.isConfirmed) {
console.log('Вы выбрали:', result.value);
}
});
В этом примере, если пользователь выбрал один из вариантов и
подтвердил свой выбор, в консоль будет выведено выбранное значение. Это
значение соответствует ключу в объекте inputOptions
(например, option1, option2 или
option3).
Можно изменять список радиокнопок динамически. Для этого необходимо
обновить параметры inputOptions после инициализации окна,
например, в ответ на действия пользователя.
Swal.fire({
title: 'Выберите опцию',
input: 'radio',
inputOptions: {
'option1': 'Вариант 1',
'option2': 'Вариант 2'
}
}).then(() => {
Swal.fire({
title: 'Новые варианты',
input: 'radio',
inputOptions: {
'option1': 'Вариант 1',
'option2': 'Вариант 2',
'option3': 'Вариант 3'
}
});
});
Здесь после подтверждения первого окна с двумя вариантами появляется новое окно с тремя вариантами. Такое поведение может быть полезно, если набор доступных вариантов зависит от действий пользователя.
Постоянно проверяйте введенные значения. Важно
добавить валидацию, чтобы избежать ситуации, когда пользователь оставит
выбор пустым. Для этого используется параметр
inputValidator, который позволяет проверять выбор
пользователя до подтверждения.
Удобство UI. Радиокнопки подходят для небольшого числа вариантов, но если их будет слишком много, лучше использовать другие элементы управления, такие как выпадающие списки.
Адаптивность. При работе с радиокнопками важно учитывать адаптивность интерфейса. Убедитесь, что элементы управления не занимают слишком много места на мобильных устройствах.
Можно использовать радиокнопки не только для текстовых вариантов, но и для изображений. Для этого необходимо присвоить каждому варианту HTML-код, который будет отображаться в качестве радиокнопки. Например:
Swal.fire({
title: 'Выберите изображение',
input: 'radio',
inputOptions: {
'img1': '<img src="image1.jpg" alt="Изображение 1" style="width: 100px;">',
'img2': '<img src="image2.jpg" alt="Изображение 2" style="width: 100px;">'
}
}).then((result) => {
if (result.isConfirmed) {
console.log('Вы выбрали изображение:', result.value);
}
});
Здесь каждому варианту присвоено изображение, и пользователь может выбрать его. Такие модальные окна особенно полезны при выборе изображений или других визуальных элементов.
Радиокнопки в SweetAlert являются мощным инструментом для создания интерактивных окон с ограниченным выбором вариантов. Эта функциональность позволяет не только делать интерфейсы более гибкими, но и улучшать взаимодействие с пользователем, делая выбор опций простым и интуитивно понятным.