29 lines
839 B
JavaScript
29 lines
839 B
JavaScript
addEventListener('turbolinks:load', () => {
|
|
const primaries = document.querySelectorAll('select[data-secondary-options]');
|
|
|
|
for (let primary of primaries) {
|
|
let secondary = document.querySelector(
|
|
`select[data-secondary-id="${primary.dataset.primaryId}"]`
|
|
);
|
|
let secondaryOptions = JSON.parse(primary.dataset.secondaryOptions);
|
|
|
|
primary.addEventListener('change', e => {
|
|
let option, options, element;
|
|
|
|
while ((option = secondary.firstChild)) {
|
|
secondary.removeChild(option);
|
|
}
|
|
|
|
options = secondaryOptions[e.target.value];
|
|
|
|
for (let option of options) {
|
|
element = document.createElement('option');
|
|
element.textContent = option;
|
|
element.value = option;
|
|
secondary.appendChild(element);
|
|
}
|
|
|
|
secondary.selectedIndex = 0;
|
|
});
|
|
}
|
|
});
|