2014-01-20 2 views
0

У меня есть глупая ошибка, которую я пропускаю. Я могу добавить элементы в форму, нажав кнопку «плюс», но у меня возникли проблемы с удалением элементов, которые я добавил. Вот мой код:Добавить/удалить поля ввода

<script> 
    $(document).ready(function(){ 
     var item_index=0; 

     $("#add_additional_item").click(function(){ 

      item_index++; 
      $("#Additional_item").attr("placeholder", "Additional Item " + item_index); 
      $("#Additional_items_wrap p").attr("id", "remove_additional_item" + item_index); 
      $("#number_of_fields").attr("value", item_index); 

$(this).parent().before($("#Additional_items_wrap").clone().attr("id","Additional_items_wrap" + item_index)); 
      $("#Additional_items_wrap" + item_index).css("display","inline"); 

      $("#Additional_items_wrap" + item_index + " :input").each(function(){ 
       $(this).attr("name",$(this).attr("name") + item_index); 
       $(this).attr("id",$(this).attr("id") + item_index); 

      }); 

      $("#remove_additional_item" + item_index).click(function(){ 

       $(this).closest("div").remove(); 
       item_index--; 
      }); 
     }); 
    }); 
</script> 

HTML-:

  <label>Add Additional Item:</label> 
     <input type="hidden" id="number_of_fields" name="number_of_fields">       

     <div id="Additional_items_wrap" class="hidden"> 

      <input type="text" name="Additional_item" id="Additional_item"> 
      <p class="icon-minus" id="remove_additional_item"></p> 

     </div> 

     <div id="input_add_item"> 

      <p id="add_additional_item" class="icon-plus" style="float:right; cursor:pointer"></p> 

     </div> 
+0

Что вы пытаетесь удалить? родительский элемент тега абзаца? – stackErr

+0

Привет, да, я пытаюсь удалить div с идентификатором add_items_wrap –

+1

, вы не можете использовать индекс, подобный этому, предположим, что у вас есть 4 входа, а u удаляет второй ... и u index - поэтому счет будет установлен на 2 и когда вы добавите индекс, будет уже элемент с тем же номером индекса. –

ответ

1

Вы пытаетесь использовать JQuery с динамическим HTML, смотрите здесь:

«Причина заключается в том, что вы не можете связать обработчик элементы, которые в настоящее время отсутствуют в DOM " jquery click event not working for dynamic fields

Обновление: Вот пример того, что я имею в виду.

$(document).on("click", "#remove_additional_item" + item_index, function() { 
    alert ("You just hit the jackpot!"); 
}); 
+0

Не мог он создать статическую кнопку, а затем с помощью метода клонирования скопируйте кнопку на каждый, чтобы существовал тот, который на самом деле присутствует в dom. Вы просто обманываете DOM? – Cam

+1

Я не думаю, что я обманываю DOM, поскольку я просто использую элемент, который уже существует. Я не знаком с методом clone, но он также может встроить вызов Javascript в созданный html. –

Смежные вопросы