2014-02-17 2 views
0

У меня есть форма с двумя выпадающими списками и одним текстовым полем, мне нужно клонировать все их сразу, ограничивая их до 5 div, а также увеличивая идентификатор или имя, я мог бы сделайте это, используя два разных элемента в одном div, но столкнувшись с проблемой с двумя одинаковыми элементами одновременно, так как для них одинаковый идентификатор. Я использовал Fiddle_DemoКлонирование 2 подобных элемента в jquery без использования нового div

Мой HTML-код:

<div id="elements"> 

<div id="Outer_00"> 
    <select name="Type" id="Type_00" disabled="disabled" class="edit"> 
<option value="ArtistType" selected="selected">Artist Type </option> 
<option value="Singer">Singer</option> 
<option value="Actor">Actor</option> 
<option value="Fighter">Fighter</option> 
<option value="Editor">Editor</option> 
<option value="Writer">Writer</option> 
</select> 
&nbsp; &nbsp; 
<select name="ASubType" id="ASubType_00" disabled="disabled" class="edit"> 
<option value="Artist Sub-Type" selected="selected">Artist Sub-Type</option> 
<option value="Actor" >-----Actor-----</option> 
<option value="Comedian" >Comedian</option> 
<option value="Hero" >Hero</option> 
<option value="Villain" >Villain</option> 
    <option value="Supporting Cast" >Supporting Cast</option> 
<option value="Singer" >-----Singer-----</option> 
<option value="Folk" >Folk</option> 
<option value="Pop" >Pop</option> 
<option value="Movie" >Movie</option> 

</select> 
&nbsp; &nbsp; 
<input type="text" placeholder="Quantity" name="Quantity" id="Quantity_00" disabled="disabled" class="edit" onkeypress="return numberOnly(this, event)" title="You can only enter numbers upto 3 " maxlength="3" /> 


</div > 

</div> 
+0

Что вы имеете в виду "клонировать все из них"? Там уже есть одна форма –

+0

yes..need to clone 2 dropdowns и одно текстовое поле @ HüseyinBABAL – Rebecca

+0

зачем вам нужны идентификаторы? почему бы не использовать нотацию массива на именах элементов формы, а затем обрабатывать информацию на стороне сервера как вложенный массив – markcial

ответ

5

это ваш ответ:

var counter = 1; 

$("#btnAdd").click(function() { 
    if (counter <= 4) { 
     counter++ 
     var innerCounter = 0; 
     $('#elements').find(".innerDiv:last").clone().appendTo("#elements").find('select').each(function() { 
      innerCounter++; 
      $(this).attr({ 
       'name': 'ddl_' + counter + innerCounter, 
        'id': 'ddl_' + counter + innerCounter 
      }) 
     }).next('input') 
      .attr({ 
      'name': 'inText_' + counter, 
       'id': 'inText_' + counter 
     }) 
    } 
}); 

http://jsfiddle.net/realdeepak/hGG3V/3/

+0

только одна проблема с кодом, который является div, должен быть видно в 5 раз счетчик идет по счету кликов. И во-вторых, div получает умноженное, он должен быть клонирован только один раз, т.е. он умножается от 1 до 2 и 2 до прямого 4 – Rebecca

+0

проверяет обновленную ссылку на скрипку с кодом. Он не будет создавать несколько раз. – RealDeepak

+0

теперь проверяйте его еще раз. :) – RealDeepak

0

если ваш идентификационный код работает, чем проверить его решить,

// попробовать этот

var counter = 1; 

$("#btnAdd").click(function() { 
counter+=1; 
if(counter <= 5) { 
$('table').find("tr:eq(1)").clone().appendTo("table").find('select') 
     .attr({ 
       'name': 'ddl_' + counter, 
       'id' : 'ddl_' + counter 
      }) 
      .closest('td').next('td').find('input') 
      .attr({ 
       'name': 'ddl_' + counter, 
       'id' : 'ddl_' + counter 
      }) 
} 
}); 

click here

+0

. Я мог бы увеличить значение, а также предел но я не могу использовать этот же код для двух похожих элементов (например, 2 выпадающих списка) – Rebecca

1

Вы можете использовать как;

var counter = 1; 

$("#btnAdd").click(function() { 
    if(counter <= 5) { 
    counter++ 
     var innerCounter = 0; 
     $('table').find("tr:eq(1)").clone().appendTo("table").find('select').each(function() { 
      innerCounter++; 
      $(this).attr({ 
        'name': 'ddl_' + counter + innerCounter, 
        'id' : 'ddl_' + counter +innerCounter 
       }) 
     }).closest('td').next('td').find('input') 
       .attr({ 
        'name': 'ddl_' + counter, 
        'id' : 'ddl_' + counter 
       }) 
    } 
}); 

Вот рабочий пример: http://jsfiddle.net/UkzU3/3/

+0

Это то, что я использовал и работал, но я использую 2 разных блока выбора и нуждаюсь в разных идентификаторах для обоих, в которых в этом коде оба поля выбора получаются тот же идентификатор – Rebecca

+0

@ user3114651 См. обновленный ответ и демонстрацию, я скорректировал символ –

+0

может помочь мне с URL-адресом скрипта, чтобы я мог показать u мой вывод на этот – Rebecca

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