luci-base: cbi.js: fix handling of inverse-depends, combobox validation
- Properly handle logic for evaluating inverted dependencies means when depending on another field *not* having a given value - Perform datatype validation *after* populating combobox choices to avoid triggering a false-positive when validating an .rmempty = false combobox during form instantiation Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
4201282559
commit
4c9ae3f615
1 changed files with 6 additions and 5 deletions
|
@ -481,8 +481,9 @@ function cbi_d_check(deps) {
|
||||||
istat = (istat && cbi_d_checkvalue(j, deps[i][j]))
|
istat = (istat && cbi_d_checkvalue(j, deps[i][j]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (istat) {
|
|
||||||
return !reverse;
|
if (istat ^ reverse) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return def;
|
return def;
|
||||||
|
@ -648,9 +649,6 @@ function cbi_combobox(id, values, def, man, focus) {
|
||||||
var dt = obj.getAttribute('cbi_datatype');
|
var dt = obj.getAttribute('cbi_datatype');
|
||||||
var op = obj.getAttribute('cbi_optional');
|
var op = obj.getAttribute('cbi_optional');
|
||||||
|
|
||||||
if (dt)
|
|
||||||
cbi_validate_field(sel, op == 'true', dt);
|
|
||||||
|
|
||||||
if (!values[obj.value]) {
|
if (!values[obj.value]) {
|
||||||
if (obj.value == "") {
|
if (obj.value == "") {
|
||||||
var optdef = document.createElement("option");
|
var optdef = document.createElement("option");
|
||||||
|
@ -685,6 +683,9 @@ function cbi_combobox(id, values, def, man, focus) {
|
||||||
|
|
||||||
obj.style.display = "none";
|
obj.style.display = "none";
|
||||||
|
|
||||||
|
if (dt)
|
||||||
|
cbi_validate_field(sel, op == 'true', dt);
|
||||||
|
|
||||||
cbi_bind(sel, "change", function() {
|
cbi_bind(sel, "change", function() {
|
||||||
if (sel.selectedIndex == sel.options.length - 1) {
|
if (sel.selectedIndex == sel.options.length - 1) {
|
||||||
obj.style.display = "inline";
|
obj.style.display = "inline";
|
||||||
|
|
Loading…
Reference in a new issue