Я сейчас работаю над динамической c формой. У меня проблемы с именованием полей ввода. Вот моя форма:
Вот код, который я пробовал Когда пользователь нажимает кнопку «Добавить код», ввод нового ввода и то же самое для родительской секции, клонируется вся форма, я хочу дать имена входам, чтобы я мог получить эффективный массив, в результате чего PHP сохранится в базе данных.
HTML:
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="">Product(s) Range Manufactured</label>
<input type="text" name="members_unit[exports_range_manf][]" id="" class="form-control" placeholder="Product(s) Range Manufactured">
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<h4>HS Codes of Products</h4>
</div>
</div>
<div class="row main-parent-header">
<div class="col-3 clone-child">
<div class="form-group mr-top-10">
<input type="text" name="members_unit[0][hs_code][]" id="" class="form-control w-full members_hs_code" placeholder="HS Codes of Products">
</div>
<span class="pull-right">
<button type="button" class="btn btn-success btn-add"><i class="fa fa-plus" aria-hidden="true"></i></button>
 
<button type="button" class="btn btn-danger btn-remove"><i class="fa fa-minus"
aria-hidden="true"></i></button>
</span>
</div>
</div>
JS:
var count = 0;
$(document).on('click', '.btn-add', function () {
var parents = $(this).closest('.main-parent-header');
var old_element = $(this).closest('.clone-child');
var new_element = old_element.clone()
if (new_element.hasClass('unit-informations')) {
var count = parents.find('.members_hs_code').length++
var l = new_element.find('.members_hs_code')
if (l.length > 1) {
l.closest('.clone-child').not(':first-child').remove()
}
l.attr('name', 'members_unit[' + count + '][hs_code][]')
}
parents.append($(new_element).insertAfter(old_element))
})
$(document).on('click', '.btn-remove', function (e) {
e.preventDefault()
var parents = $(this).closest('.main-parent-header');
var old_element = parents.find('.clone-child');
if (old_element.hasClass('unit-informations')) {
var units = parents.find('.unit-informations')
if (units.length != 1) {
$(this).closest('.clone-child').remove();
var units = parents.find('.unit-informations')
units.each(function(index,ele){
$('.unit-informations:nth-child('+index+')').find('.members_hs_code').each(function(e,sub_ele){
$('.unit-informations:nth-child('+index+')').find('.members_hs_code:nth-child('+e+')').attr('name','members_unit['+index+'][hs_code][]')
})
})
}
} else {
if (old_element.length == 1) {
$(this).css('disabled', true)
} else {
$(this).closest('.clone-child').remove();
}
}
})
Как я присваиваю имена полям ввода, чтобы получить такой результат в php:
0 => array:3 [
"exports_price" => 1
"exports_unit" => 4
"hs_codes" => array:3 [
0 => "3713"
1 => "471238"
2 => "1237"
]
]
1 => array:3 [
"exports_price" => 1
"exports_unit" => 4
"hs_codes" => array:2 [
0 => "3713"
1 => "471238"
]
]