luci-base: ui.js: fix input value reading for select widgets
authorJo-Philipp Wich <jo@mein.io>
Sat, 2 May 2020 21:51:22 +0000 (23:51 +0200)
committerJo-Philipp Wich <jo@mein.io>
Thu, 7 May 2020 17:40:49 +0000 (19:40 +0200)
Fixes: #3989
Fixes: 81effc111 ("luci-base: ui.js: assume select widget by default for ListValue widget")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit e3ef463ccdd7d32eef1717203bd872272c57793d)

modules/luci-base/htdocs/luci-static/resources/ui.js

index bcdfd7982395dcf888ea138c42cd6c212053ca78..3638e3e1a133bb4e52f3614d3dc219d218f0243d 100644 (file)
@@ -773,7 +773,7 @@ var UISelect = UIElement.extend(/** @lends LuCI.ui.Select.prototype */ {
        bind: function(frameEl) {
                this.node = frameEl;
 
-               if (this.options.widget == 'select') {
+               if (this.options.widget != 'radio' && this.options.widget != 'checkbox') {
                        this.setUpdateEvents(frameEl.firstChild, 'change', 'click', 'blur');
                        this.setChangeEvents(frameEl.firstChild, 'change');
                }
@@ -792,7 +792,7 @@ var UISelect = UIElement.extend(/** @lends LuCI.ui.Select.prototype */ {
 
        /** @override */
        getValue: function() {
-               if (this.options.widget == 'select')
+               if (this.options.widget != 'radio' && this.options.widget != 'checkbox')
                        return this.node.firstChild.value;
 
                var radioEls = this.node.querySelectorAll('input[type="radio"]');
@@ -805,7 +805,7 @@ var UISelect = UIElement.extend(/** @lends LuCI.ui.Select.prototype */ {
 
        /** @override */
        setValue: function(value) {
-               if (this.options.widget == 'select') {
+               if (this.options.widget != 'radio' && this.options.widget != 'checkbox') {
                        if (value == null)
                                value = '';