From 3d1f9b05e9ff165f5ba74c46f167fb73dbbf5bc9 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Mon, 4 Aug 2008 17:35:44 +0000 Subject: libs/cbi: Optimized Comboboxes --- libs/cbi/htdocs/luci-static/resources/cbi.js | 68 +++++++++++++++------------- 1 file changed, 36 insertions(+), 32 deletions(-) (limited to 'libs/cbi/htdocs/luci-static') diff --git a/libs/cbi/htdocs/luci-static/resources/cbi.js b/libs/cbi/htdocs/luci-static/resources/cbi.js index 38e27d8f4..7cb2f7c1d 100644 --- a/libs/cbi/htdocs/luci-static/resources/cbi.js +++ b/libs/cbi/htdocs/luci-static/resources/cbi.js @@ -60,46 +60,50 @@ function cbi_bind(obj, type, callback, mode) { function cbi_combobox(id, values, def, man) { var obj = document.getElementById(id) - if (obj.value == "" || values[obj.value]) { - var sel = document.createElement("select") - obj.parentNode.appendChild(sel) + var sel = document.createElement("select"); + obj.parentNode.appendChild(sel); - if (obj.value == "") { - var optdef = document.createElement("option") - optdef.value = "" - optdef.appendChild(document.createTextNode(def)) - sel.appendChild(optdef) - } - - for (var i in values) { - var opt = document.createElement("option") - opt.value = i + if (obj.value == "") { + var optdef = document.createElement("option"); + optdef.value = ""; + optdef.appendChild(document.createTextNode(def)); + sel.appendChild(optdef); + } else if (!values[obj.value]) { + var opt = document.createElement("option"); + opt.value = obj.value; + opt.selected = "selected"; + opt.appendChild(document.createTextNode(obj.value)); + sel.appendChild(opt); + } - if (obj.value == i) { - opt.selected = "selected" - } + for (var i in values) { + var opt = document.createElement("option"); + opt.value = i; - opt.appendChild(document.createTextNode(values[i])) - sel.appendChild(opt) + if (obj.value == i) { + opt.selected = "selected"; } - var optman = document.createElement("option") - optman.value = "" - optman.appendChild(document.createTextNode(man)) - sel.appendChild(optman) + opt.appendChild(document.createTextNode(values[i])); + sel.appendChild(opt); + } + + var optman = document.createElement("option"); + optman.value = ""; + optman.appendChild(document.createTextNode(man)); + sel.appendChild(optman); - obj.style.display = "none" + obj.style.display = "none"; - cbi_bind(sel, "change", function() { - obj.value = sel.options[sel.selectedIndex].value + cbi_bind(sel, "change", function() { + obj.value = sel.options[sel.selectedIndex].value; - if (sel.selectedIndex == sel.options.length - 1) { - obj.style.display = "inline" - sel.parentNode.removeChild(sel) - obj.focus() - } - }) - } + if (sel.selectedIndex == sel.options.length - 1) { + obj.style.display = "inline"; + sel.parentNode.removeChild(sel); + obj.focus(); + } + }) } function cbi_combobox_init(id, values, def, man) { -- cgit v1.2.3