浏览代码

Group radio buttons when setting query parameters, so only the selected value is added

Radio buttons would call `_.set` for each of them, meaning that the value of the parameter would always be the set to the same as the last added.

With this change, the selected value is set instead.
stelar7 3 年之前
父节点
当前提交
65d259ad48
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      resources/js/tryitout.js

+ 13 - 0
resources/js/tryitout.js

@@ -178,6 +178,19 @@ async function executeTryOut(endpointId, form) {
     const query = {};
     const query = {};
     const queryParameters = form.querySelectorAll('input[data-component=query]');
     const queryParameters = form.querySelectorAll('input[data-component=query]');
     queryParameters.forEach(el => _.set(query, el.name, el.value));
     queryParameters.forEach(el => _.set(query, el.name, el.value));
+    Array.from(queryParameters)
+        .filter(el => el.type === "radio")
+        .reduce(
+            (entryMap, e) => entryMap.set(e.name, [...(entryMap.get(e.name) || []), e]),
+            new Map()
+        )
+        .forEach((v, k) => {
+            v.forEach(el => {
+                if (el.checked) {
+                    _.set(query, k, el.value);
+                }
+            });
+        });
 
 
     let path = form.dataset.path;
     let path = form.dataset.path;
     const urlParameters = form.querySelectorAll('input[data-component=url]');
     const urlParameters = form.querySelectorAll('input[data-component=url]');