Код: Выделить всё
function defaultParameter(value, defaultValue) {
return typeof value !== 'undefined' ? value : defaultValue;
}
/**
* @param {jQuery} $dropDown
* @param {string} value
* @param {string} caption
* @param {string} [icon] Sets the value of eh-icon to be rendered by the Select2. If this is not set or set to '' then this is ignored.
* @param {boolean} [selectItem] Defaults to true
* @param {string} [optionGroup] The option group that this option belongs to.
*/
function addOptionToSelect2($dropDown, value, caption, icon, selectItem, optionGroup) {
value = value.replaceAll('-', '');
let $option = $dropDown.find(`option[value=${value}]`);
if ($option.length) {
$option.text(caption);
if (selectItem) {
$dropDown.val(value).trigger(EventBindings.Change);
}
return;
}
selectItem = defaultParameter(selectItem, true);
let newOption = createElement('option');
newOption.attr(Attributes.Value, value);
newOption.text(caption);
optionGroup = defaultParameter(optionGroup, '');
if (optionGroup === '') {
$dropDown.append(newOption).trigger(EventBindings.Change);
}
else {
$dropDown.find(`optgroup[label="${optionGroup}"]`).append(newOption);
}
if (selectItem) {
$dropDown.val(value).trigger(EventBindings.Change);
}
}
HTML (раскрывающийся список содержится в модальном окне начальной загрузки):
Код: Выделить всё
Please select a value
BBC
ITV
Test 2
Test company
T1
Добавить динамическую опцию внутри optgroup в select2
* При этом, если я проверю HTML в инспекторе DOM, опция будет добавлена, но когда я открываю раскрывающийся список в браузере, опции там нет.
Поэтому, когда я вызываю addOptionToSelect2($('#ddlOptions', '1234', 'Test 4'); значение Test 4 появляется в DOM, но когда я просматриваю раскрывающийся список, этот параметр не отображается как часть раскрывающегося списка select2.
Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-group
Мобильная версия