Задача: выбрать кол-во инпутов/авторов, вывести их на экран, в каждом должен работать autocomplete по ФИО юзеров. После выбора предложенного значения автокомплитом, ФИО остается в инпуте, а id юзера передается в hidden.
В work_autor.php получаем список для нашего autocomplete
foreach ($res as $r) {
$result[] = array('label' => $r->fullname, 'id' => $r->uid, 'value'=>$r->fullname);
}
Реализация JS: Первый автор, его id и его vklad определены заранее, инпуты формируются, если авторов больше одного.
function reloadAutocomplete() {
$( ".disc" ).autocomplete(
{
source:'work_autor.php,
minChars: 2,
autoFill: true,
selectFirst: true,
width: '140px',
maxItemsToShow: 3,
select: function( event, ui ) {
$(".uid").val( ui.item.id);
}
})
}
//вывод инпутов
$(document).ready(function () {
$('#count_soautors').on('change', function () {
var countSoautors = $(this).val()-1; //countSoautors - кол-во авторов, т.е. инпутов
var layout = '';
for (var i = 0; i < countSoautors; i++) {
layout += '<input type="hidden" name="term" />';
layout += '<input type="hidden" class="uid" name="uid[]" />';
layout += 'Автор: <input type="text" class="disc" name="autor[]" size="90"/>';
layout += 'Вклад автора в работу: <input required type="number" min="0" max="100" name="vklad[]" /><br/>';
}
$('#soautorsList').html(layout);
reloadAutocomplete();
})
});
В итоге получаем три массива
[autor] => Array
(
[1] => юзер1
[2] => юзер2
[3] => юзер3
)
[uid] => Array
(
[1] => 2925
[2] => 42202
[3] => 42202
)
[vklad] => Array
(
[1] => 50
[2] => 20
[3] => 30
)
Т.е. последний выбранный id записывается во все элементы массива [uid]. Как исправить, чтобы id соответствовали авторам?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости