Задать вопрос
@pasterh

Как заполнить select с выбором даты при размножении полей формы?

Есть поля формы с выбором даты день месяц год.
<div class="worked">
        Опыт работы <br/>
        <div><textarea name="work[]" class="work" placeholder="work" ></textarea></div><br/>
         С <select name="wday[]" id="wday">
<?php echo $dayOptions; ?>
</select>
<select name="wmonth[]" id="wmonth"  onchange="updateDays();">
<?php echo $monthOptions; ?>
</select>
 
<select name="wyear[]" id="wyear" onchange="updateDays();">
<?php echo $yearOptions; ?>
</select> по <select name="weday[]" id="weday"  onchange="updateDays();">
<?php echo $dayOptions; ?>
</select>
<select name="wemonth[]" class="wemonth"  onchange="updateDays();">
<?php echo $monthOptions; ?>
</select>
<select name="weyear[]" class="weyear"  onchange="updateDays();">
<?php echo $yearOptions; ?>
</select>

Пробую размножать поля примерно так.
$(document).ready(function(){
   var di = $('select').size() + 1; 
    $('#add').click(function() {
		$('<select class="wdays" name="wday[]" onchange="updateDays(); value="' + di + '"></select>').fadeIn('slow').appendTo('.worked');
		di++;
	});
       $('#remove').click(function() {
	if(di > 1) {
		$('.wdays:last').remove();
		di--; 
	}
	});

Поля копируются но естественно без заполнения. Как понимаю php тут вообще не вариант.
нашёл примерно такой код
function injectSelect (sel, rowsObject) {
            var opt, x;
            sel.innerHTML = "";
            for (x in rowsObject) {
                opt = document.createElement("option");
                opt.value = x;
                opt.innerHTML = rowsObject[x];
                sel.appendChild(opt);
            }
        }
 function makeNumbersObject (from, to) {
            var result = {}, x;
            if(from > to) { 
                var z = from;
                from = to;
                to = z;
            }
            for (x = from; x <= to; x++) {
                result[x] = x;
            }
            return result;
        }
        injectSelect(document.getElementById("wmonth"), {mon:"месяц",
            jan:"Январь", feb:"Февраль", mar:"Март", apr:"Апрель", 
            may:"Май", jun:"Июнь", jul:"Июль", avg:"Август", 
            sep:"Сентябрь", okt:"Октябрь", nov:"Ноябрь", dec:"Декабрь"
        });
        injectSelect(document.getElementById("wyear"), makeNumbersObject(1920, 2019)); // Наполняем года
        injectSelect(document.getElementById("wday"), makeNumbersObject(1, 31));// Наполняем дни

Но при размножении полей он не работает. В js не понимаю ни черта. Есть варианты заставить их заполнятся при размножении полей?
  • Вопрос задан
  • 183 просмотра
Подписаться Средний Комментировать
Решения вопроса 1
Вам нужно клонировать существующий селект, поменять в нем id и вставить в нужное место. Клонировать элемент можно с помощью
https://api.jquery.com/clone/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы