libs/cbi: fix dependency handling of radio buttons
[project/luci.git] / libs / cbi / htdocs / luci-static / resources / cbi.js
index 08ee593..247228d 100644 (file)
@@ -45,7 +45,18 @@ function cbi_d_checkvalue(target, ref) {
        var t = document.getElementById(target);
        var value;
 
-       if (!t || !t.value) {
+       if (!t) {
+               var tl = document.getElementsByName(target);
+
+               if( tl.length > 0 && tl[0].type == 'radio' )
+                       for( var i = 0; i < tl.length; i++ )
+                               if( tl[i].checked ) {
+                                       value = tl[i].value;
+                                       break;
+                               }
+
+               value = value ? value : "";
+       } else if (!t.value) {
                value = "";
        } else {
                value = t.value;
@@ -91,7 +102,7 @@ function cbi_d_update() {
 
                if (node && node.parentNode && !cbi_d_check(entry.deps)) {
                        node.parentNode.removeChild(node);
-                       state = (state || !node.parentNode);
+                       state = true;
                        if( entry.parent )
                                cbi_c[entry.parent]--;
                } else if ((!node || !node.parentNode) && cbi_d_check(entry.deps)) {
@@ -100,7 +111,7 @@ function cbi_d_update() {
                        } else {
                                next.parentNode.insertBefore(entry.node, next);
                        }
-                       state = (state || (node && node.parentNode))
+                       state = true;
                        if( entry.parent )
                                cbi_c[entry.parent]++;
                }