How to add data to array ? i have form input with some option and i used button add more for add section form input. I want to make the options that have been selected not displayed in the rest of the index. example :
And I store it in an array. i want got result like this [G05B-IA1,G05B-IA2,G05B-IA3] But, the result i got it is ['G05B-IA2', 'G05B-IA2', 'G05B-IA2']
My Jquery Code
$(document).on('change', '.slot_id', function(){
cekslotid = $(this).val();
console.log(cekslotid);
});
$(document).on('change', '.warehouse2', function(){
var warehouseid = $(this).val();
let idtarget = $(this).data('idtarget');
let cektarget = idtarget - 1;
let slotid1 = $("#slot_id").val();
let slotid2 = $("#slot_id"+cektarget+'').val();
let data = [slotid1];
$('.slot_id').each(function() {
data.push($(cekslotid).val());
});
console.log(data);
My HTML in view
<div class="add-more-pallet">
<div class="row">
<div class="col-md-6">
<label>Pilih Gudang : </label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-warehouse"></i></span>
</div>
<select class="form-control" id="warehouse" required>
<option value="">-- Pilih Gudang --</option>
@foreach($warehouse as $row)
<option value="{{ $row->id_warehouse }}">{{ $row->warehouse_name }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-md-5">
<label>Pilih Pallet : </label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pallet"></i></span>
</div>
<select class="form-control slot_id" id="slot_id" name="slot_id[]" required><option value="">-- Pilih Pallet --</option></select>
</div>
</div>
My HTML in Jquery
'<div class="col-md-6">' +
'<label>Pilih Gudang : </label>' +
'<div class="input-group mb-3">' +
'<div class="input-group-prepend">' +
'<span class="input-group-text"><i class="fas fa-warehouse"></i></span>' +
'</div>' +
'<select class="form-control warehouse2" data-idtarget="'+i+'" required>' +
'<option value="">-- Pilih Gudang --</option>' +
'<option value="G05B">Gudang 05 B</option>' +
'<option value="G09">Gudang 09</option>' +
'</select>' +
'</div>' +
'</div>' +
'<div class="col-md-5">' +
'<label>Pilih Pallet : </label>' +
'<div class="input-group mb-3">' +
'<div class="input-group-prepend">' +
'<span class="input-group-text"><i class="fas fa-pallet"></i></span>' +
'</div>' +
'<select id="slot_id'+i+'" class="form-control slot_id" name="slot_id['+i+']" data-idtarget="'+i+'" required><option value="">-- Pilih Pallet --</option></select>' +
'</div>' +
'</div>' +
What's wrong with my code ? Why does the value stored in the array become double ?
You are pushing the same value over and over, the one you set here
$(document).on('change', '.slot_id', function(){
cekslotid = $(this).val();
});
Here is a working method
let data = $('.slot_id').map(function() { return this.value }).get();