Umbrella JS — лёгкая библиотека для манипуляций с
DOM, которая сочетает простоту jQuery с современными подходами
JavaScript. Одной из частых задач при работе с формами является
управление <select>-элементами: получение выбранного
значения, установка значения программно, динамическое добавление или
удаление опций.
Для получения текущего выбранного значения
<select> используется метод .val(). Он
возвращает значение выбранного <option>.
u('#mySelect').val(); // Вернёт значение выбранного option
Если <select> позволяет множественный выбор
(multiple), метод .val() вернёт массив всех
выбранных значений.
const values = u('#myMultiSelect').val();
// ["value1", "value3"]
Для установки выбранного значения <select> также
используется метод .val(). Если значение совпадает с
value одного из <option>, оно будет
выбрано.
u('#mySelect').val('option2'); // Установит выбранным второй option
Для множественного выбора можно передать массив значений:
u('#myMultiSelect').val(['value1', 'value2']);
Если переданное значение отсутствует среди
<option>, выбор не изменится.
Метод .val() возвращает значение, но иногда нужно
получить текст выбранного <option>. Для этого
используется цепочка методов .find() и
.text():
const selectedText = u('#mySelect').find('option:selected').text();
Для множественного выбора можно пройтись по всем выбранным:
const selectedTexts = u('#myMultiSelect')
.find('option:selected')
.map(el => el.textContent);
Добавление нового <option>
выполняется с помощью метода .append():
u('#mySelect').append('<option value="new">Новая опция</option>');
Можно создавать элементы программно через
document.createElement и передавать в
.append():
const option = document.createElement('option');
option.value = 'dynamic';
option.text = 'Динамическая опция';
u('#mySelect').append(option);
Удаление опций происходит через метод
.remove():
u('#mySelect').find('option[value="old"]').remove();
Для очистки всего списка можно использовать
.html(''):
u('#mySelect').html(''); // Удаляет все опции
Событие изменения выбора <select> отслеживается
через .on('change', ...):
u('#mySelect').on('change', function(e) {
const value = u(this).val();
console.log('Выбранное значение:', value);
});
Для множественного выбора можно получить массив всех выбранных значений:
u('#myMultiSelect').on('change', function() {
const values = u(this).val();
console.log('Выбранные значения:', values);
});
Для управления состоянием <select> используются
методы .attr() и .removeAttr():
u('#mySelect').attr('disabled', true); // Деактивировать
u('#mySelect').removeAttr('disabled'); // Активировать
Umbrella JS позволяет легко манипулировать
<optgroup> и их <option>:
// Добавление нового option в существующую группу
u('#mySelect optgroup[label="Группа 1"]').append('<option value="extra">Дополнительно</option>');
// Удаление всех опций из группы
u('#mySelect optgroup[label="Группа 2"] option').remove();
Для случаев, когда нужно полностью обновить список
<select> удобно использовать
.html():
const options = [
{value: '1', text: 'Первый'},
{value: '2', text: 'Второй'},
{value: '3', text: 'Третий'}
];
const html = options.map(o => `<option value="${o.value}">${o.text}</option>`).join('');
u('#mySelect').html(html);
Umbrella JS поддерживает доступ к <option> по
индексу через метод .eq():
// Получить текст второй опции
const text = u('#mySelect option').eq(1).text();
// Сделать третью опцию выбранной
u('#mySelect option').eq(2).attr('selected', true);
После изменения атрибута selected рекомендуется вызвать
.val() или обновить выбор через свойство
selectedIndex, чтобы браузер корректно отразил
изменение.
Все методы работы с <select> легко комбинируются с
другими функциями библиотеки:
.each() для перебора опций..map() для получения массивов значений или текста..filter() для выборки по определённому критерию..closest() для поиска родительских форм и блоков.Пример фильтрации и выбора:
u('#mySelect option').filter(el => el.value.startsWith('a')).attr('selected', true);
Этот подход позволяет создавать динамические интерфейсы с
<select> без лишнего кода.
Работа с <select> в Umbrella JS строится на
простых и понятных методах .val(), .find(),
.append(), .remove() и событиях
.on('change'). Эти инструменты обеспечивают полный контроль
над выбором, динамическим наполнением списка и взаимодействием с
пользователем.