30 lines
1005 B
JavaScript
30 lines
1005 B
JavaScript
/**
|
|
* @description Sync select field with input field until user focuses it.
|
|
* @param {HTMLSelectElement} sourceElementSelector
|
|
* @param {HTMLInputElement} targetElementSelector
|
|
*/
|
|
function syncSelectInputUntilChanged(
|
|
sourceElementSelector,
|
|
targetElementSelector
|
|
) {
|
|
const sourceElement = document.querySelector(sourceElementSelector);
|
|
const targetElement = document.querySelector(targetElementSelector);
|
|
function sourceElementHandler(event) {
|
|
let selected = event.target.value;
|
|
let selectedValue = document.querySelector(
|
|
`#id_game option[value='${selected}']`
|
|
).textContent;
|
|
targetElement.value = selectedValue;
|
|
}
|
|
function targetElementHandler(event) {
|
|
sourceElement.removeEventListener("change", sourceElementHandler);
|
|
}
|
|
|
|
sourceElement.addEventListener("change", sourceElementHandler);
|
|
targetElement.addEventListener("focus", targetElementHandler);
|
|
}
|
|
|
|
window.addEventListener("load", () => {
|
|
syncSelectInputUntilChanged("#id_game", "#id_name");
|
|
});
|