瀏覽代碼

fix selected values in list-multi form fields (#1101)

ChaosKid42 7 年之前
父節點
當前提交
63764a7d51
共有 2 個文件被更改,包括 20 次插入2 次删除
  1. 16 0
      src/utils/core.js
  2. 4 2
      src/utils/form.js

+ 16 - 0
src/utils/core.js

@@ -814,5 +814,21 @@
         const replacement = 'geo:$1,$2';
         return text.replace(_converse.geouri_regex, replacement);
     };
+
+    u.getSelectValues = function(select) {
+        var result = [];
+        var options = select && select.options;
+        var opt;
+
+        for (var i=0, iLen=options.length; i<iLen; i++) {
+            opt = options[i];
+
+            if (opt.selected) {
+                result.push(opt.value || opt.text);
+            }
+        }
+        return result;
+    };
+
     return u;
 }));

+ 4 - 2
src/utils/form.js

@@ -58,8 +58,10 @@
         let value;
         if (field.getAttribute('type') === 'checkbox') {
             value = field.checked && 1 || 0;
-        } else if (field.tagName == "textarea") {
+        } else if (field.tagName == "TEXTAREA") {
             value = _.filter(field.value.split('\n'), _.trim);
+        } else if (field.tagName == "SELECT") {
+            value = u.getSelectValues(field);
         } else {
             value = field.value;
         }
@@ -96,7 +98,7 @@
                         return tpl_select_option({
                             'value': value,
                             'label': option.getAttribute('label'),
-                            'selected': _.startsWith(values, value),
+                            'selected': values.includes(value),
                             'required': !_.isNil(field.querySelector('required'))
                         })
                     }