Использование jQuery для динамического добавления полей формы (или наборов полей) на основе значения раскрывающегося списка

Как видно из заголовка, я пытаюсь сделать так, чтобы jQuery добавил несколько дополнительных наборов полей на основе значения, выбранного в раскрывающемся списке. Например, при загрузке страницы раскрывающийся список имеет значение по умолчанию, равное 1, и отображается набор полей по умолчанию. Теперь, если пользователь выберет другое значение в этом раскрывающемся списке, число наборов полей должно быть соответствующим образом скорректировано с помощью клонирования (я полагаю, это будет лучшим решением). Вот что у меня так далеко:

Код выпадающего списка ...

<select id="itemCount" name="itemCount">
 <option value="1">1 item</option>
 <option value="2">2 items</option>
 <option value="3">3 items</option>
 <option value="4">4 items</option>
 <option value="5">5 items</option>
 <option value="6">6 items</option>
</select>

... слушатель изменения jQuery ...

$(document).ready(function() {
 $("#itemCount").change(function(){
  var itemCountVal = jQuery(this).val();
  $("#item_dup_1").fieldsManage(itemCountVal);
 });
});

... и сама функция (на самом деле она основана на плагине jQuery, который, по моему мнению, послужил хорошей отправной точкой для того, что мне нужно):

jQuery.fn.fieldsManage = function (number) {
  var clone,
  objTemplate = source.clone(true),
  source = jQuery(this),
  maxClones = number - 1,
  clones = [];

  if (clones.length < maxClones) {
    while (clones.length < maxClones) {
      clone = objTemplate.clone(true).insertAfter(clones[clones.length - 1] || source);
      clones.push(clone);
    }
  }

  if (clones.length > maxClones) {
    // Fieldsets removal function goes here.
  }
}

Клонируемый объект - это что-то вроде<fieldset id="item_dup_1"><input><input><input></fieldset>, Я не думаю, что необходимо показывать полный код для этого.

Это работает как талисман для первого изменения, но если пользователь снова изменяет значение, то когда все идет не так, и вместо того, чтобы показывать правильное количество наборов полей, он показывает больше. Похоже, что он вычисляет количество необходимых наборов полей, начиная с нуля, игнорируя тот факт, что наборы полей уже были добавлены, и в этом моя проблема. У меня также есть функция (не показанная здесь просто для ясности и краткости вопроса), которая присваивает новые идентификаторы клонированному набору полей, чтобы предотвратить дублирование идентификаторов, и которая работает без помех.

Я убежден, что я делаю что-то не так, но вот уже два дня я бьюсь головой об стену, пытаясь выяснить, что это такое, без всякой удачи, любая помощь будет более чем признательна!

Заранее спасибо !

Ответы на вопрос(1)

Ваш ответ на вопрос