libs/cbi: Optimized Comboboxes

This commit is contained in:
Steven Barth 2008-08-04 17:35:44 +00:00
parent 084db952ce
commit 3d1f9b05e9
3 changed files with 44 additions and 40 deletions

View file

@ -4,5 +4,5 @@ cbi_invalid = "Error: Invalid input value"
cbi_addopt = "-- Additional Field --"
cbi_optional = " (optional)"
cbi_sectempty = "This section contains no values yet"
cbi_manual = "-- manual --"
cbi_manual = "-- custom --"
cbi_select = "-- Please choose --"

View file

@ -3,5 +3,5 @@ cbi_del = "Eintrag entfernen"
cbi_invalid = "Error: Ungültige Eingabe"
cbi_addopt = "-- Zusätzliches Feld --"
cbi_sectempty = "Diese Sektion enthält noch keine Einträge"
cbi_manual = "-- manuell --"
cbi_manual = "-- benutzerdefiniert --"
cbi_select = "-- Bitte auswählen --"

View file

@ -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 == i) {
opt.selected = "selected"
}
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"
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 (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);
}
for (var i in values) {
var opt = document.createElement("option");
opt.value = i;
if (obj.value == i) {
opt.selected = "selected";
}
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";
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();
}
})
}
function cbi_combobox_init(id, values, def, man) {