How to make an array of value with select multiple

0
I have a jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery jQuery variables of my select.

let form = $('#form-pessoas-cadastrar').serializeArray();
console.log(form);

$.post('/api/pessoas/store',form);//Sósalvaoultimovalor"atividades[]=5"

My problem is in this part, I can not serialize the select to save the values in the same column of the database pessoas.atividades('1,3,5') after also have to do the reverse, bring the pro select bank values.

    
asked by anonymous 01.12.2017 / 01:40

1 answer

0

I was able to solve the problem by adjusting the html, and dealing with jquery as follows.

// Alterei o source html/pug com os valores legíveis de cada atividade.
label.col-md-1.control-label Atividades
div.col-md-2
select.form-control(multiple='', style="width: 100%", name='atividades_temp')
  optgroup(label='Atividades')
    option(value='Cliente') Cliente
    option(value='Proprietário') Proprietário
    option(value='Colaborador') Colaborador
    option(value='Transportador') Transportador
    option(value='Armazenador') Armazenador

// seletor jquery do select atividades_temp
let $atv = $("select[name='atividades_temp']");

// Usei um input para alocar as informações vindas do select atividades_temp
$('input.select2-search__field').attr({name: 'atividades', type: 'hidden'});

// no evento OnClick do botão submit eu pego o array do multiple select 
// e adiciono no input hidden, para serializar o form.
$("input[name='atividades']").val($atv.val().toString());            
console.log($atv.val().toString()); // "Cliente,Proprietário,Colaborador,Transportador"
let form = $('#form-pessoas-cadastrar').serializeArray();
$.post(urlApi, form);

Summary:
A select multiple creates an array with the selected options, but the toString() function of js transforms the array object to a string object, so I can slice and treat as needed.

    
02.12.2017 / 12:13