2017-01-26 4 views
0

Я работаю с формой переключателей и массивов с помощью JQuery, но мне трудно записывать выбранные значения в один массив. Вот мой код:JQuery должен возвращать один массив данных из формы, возвращает два

<script> 
 
$(document).ready(function(){ 
 
    $("#submit").click(function(){ 
 
     var x = $("form").serializeArray(); 
 
     $.each(x, function(i, field){ 
 
\t \t \t //do other stuff with it later \t 
 
     }); 
 
    }); 
 
}); 
 
</script>
<form> 
 

 
\t <fieldset id="group1"> 
 
\t <div> 
 
\t \t <input type="radio" id="r1" name="group1"" value="STEM"> 
 
\t \t <label for="r1"> STEM (Science, Tech, Engineering and Math)</label> 
 
\t </div> 
 
\t <div> 
 
\t \t <input type="radio" id="r2" name="group1"" value="HUMAN"> 
 
\t \t <label for="r2">Humanities (Art, History, Music, Language) </label> 
 
\t \t \t 
 
\t </div> 
 
\t </fieldset> 
 
\t <fieldset id="group2"> 
 
\t <div> 
 
\t \t <input type="radio" id="r3" name="group2" value="EXTRO"> 
 
\t \t <label for="r3"> Extrovert (Like being around other people)</label> 
 
\t </div> 
 
\t <div> 
 
\t \t <input type="radio" id="r4" name="group2" value="INTRO"> 
 
\t \t <label for="r4">Introvert (Don't like being around other people)</label> 
 
\t </div> 
 
\t </fieldset> 
 
</form> 
 
<button id="submit" type="button" value="Submit">Submit</button>

Я хотел бы, чтобы выход в один массив, но в настоящее время он выводит в массив для каждого FIELDSET, как это исправить?

Ciao.

+0

только возвращает один массив здесь https://jsfiddle.net/5zxLrcht/Непонятно, что вы просите или пытаетесь сделать. Показать ожидаемые результаты. Также предлагаю вам ознакомиться с документацией – charlietfl

+0

@Web_Designer huh? он содержит объекты в обоих этих индексах, а не массивы. Точно как задокументировано – charlietfl

+0

@charlietfl Ваше право. Я был неправ. Я неправильно читаю консоль. –

ответ

4

Возможно, я не понимаю вопрос правильно, но кажется, что вывод функции представляет собой массив объектов, [{name: 'group1', value: ...}, {name: 'group2', value: ...}] Итак, если вы просто хотите, чтобы значения находились только в одном массиве, это похоже на выполнение этой работы.

var x = $("form").serializeArray().map((ob) => ob.value); 

(я хотел спросить детали, но я не могу комментировать, так как я не хватает репутации ... надеюсь, что это помогает.)

Смежные вопросы