diff --git a/src/helpers/web/WebPanelServer.cpp b/src/helpers/web/WebPanelServer.cpp
index 5f107214..0e6828c3 100644
--- a/src/helpers/web/WebPanelServer.cpp
+++ b/src/helpers/web/WebPanelServer.cpp
@@ -866,39 +866,10 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
@@ -2150,6 +2121,8 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
}
function refreshMqttIataWarning() {
const input = document.getElementById("mqttIata");
+ const saveBtn = document.querySelector('[data-input="mqttIata"][data-prefix]');
+ if (saveBtn) saveBtn.disabled = !input || !input.value.trim();
const banner = document.getElementById("mqttIataBanner");
const inlineWarning = document.getElementById("mqttBrokerWarning");
const showWarning = !!(input && isUnsetMqttIata(input.value));
@@ -2402,6 +2375,13 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
}
selectEl.innerHTML = options.join("");
syncRadioPresetUi();
+ const datalist = document.getElementById("mqttIataList");
+ const iataOptions = [''];
+ for (const entry of entries) {
+ if (!entry.code || !entry.name) continue;
+ iataOptions.push(``);
+ }
+ datalist.innerHTML = iataOptions.join("");
} catch (error) {
radioPresetEntries = [];
selectEl.innerHTML = '';
@@ -2453,9 +2433,12 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
document.querySelectorAll("[data-cmd]").forEach((btn) => btn.onclick = () => runCommand(btn.dataset.cmd));
document.querySelectorAll("[data-prefix]").forEach((btn) => btn.onclick = () => runPrefixed(btn.dataset.prefix, btn.dataset.input));
document.querySelectorAll("[data-load-cmd]").forEach((btn) => btn.onclick = () => loadField(btn.dataset.loadCmd, btn.dataset.loadInput, btn.dataset.loadFormat));
- const mqttIataSelect = document.getElementById("mqttIata");
- if (mqttIataSelect) {
- mqttIataSelect.addEventListener("change", refreshMqttIataWarning);
+ const mqttIataInput = document.getElementById("mqttIata");
+ if (mqttIataInput) {
+ mqttIataInput.addEventListener("input", () => {
+ const saveBtn = document.querySelector('[data-input="mqttIata"][data-prefix]');
+ if (saveBtn) saveBtn.disabled = !mqttIataInput.value.trim();
+ });
}
async function setMeshcoretelMode(enabled) {
if (enabled && getLetsmeshMode() === "both") {