async function controlsDialog() { const div = $(` `); // delete the div when the modal is closed div.on("hidden.bs.modal", function() { div.remove(); }); div.modal("show"); let controlsList = div.find(".controls-list"); const controls = await $.post(`https://${resName}/detectPressedControls`); controlsList.empty(); return new Promise((resolve, reject) => { controls.forEach(control => { let row = $(`${control.id}${control.default}${control.name}`); row.click(() => { div.modal("hide"); resolve(control.id); }); controlsList.append(row); }); div.find("table").show(); div.find(".info-text").text(getLocalizedText("menu:controls_dialog:info_2")); div.find(".info-text-3").show(); }); } $(document).on("click", "input[data-dialog-type='control']", async function() { const result = await controlsDialog(); if (!result) return; $(this).val(result); });