2016-07-20 83 views
0

我有一個表格是這樣的:jQuery的:生成「名稱」屬性陣列動態

<form> 
    <div class="repeatable"> 
    <div class="repeatable"> 
     <div class="repeatable"> 
     <input name="level_three"> 
     <input name="inner_three"> 
     <a>+</a> 
     </div> 
     <input name="level_two"> 
     <a>+</a> 
    </div> 
    <input name="level_one"> 
    <a>+</a> 
    </div> 
</form> 

加號克隆最接近本身的整個repeatable。我想一個jQuery功能通過repeatable小號迭代,使輸入名字是這樣的一個數組:

<form> 
    <div class="repeatable"> 
    <div class="repeatable"> 
     <div class="repeatable"> 
     <input name="level_three[0][0]"> 
     <input name="inner_three[0][0]"> 
     <a>+</a> 
     </div> 
     <div class="repeatable"> 
     <input name="level_three[0][1]"> 
     <input name="inner_three[0][1]"> 
     <a>+</a> 
     </div> 
     <input name="level_two[0]"> 
     <a>+</a> 
    </div> 
    <div class="repeatable"> 
     <div class="repeatable"> 
     <input name="level_three[1][0]"> 
     <input name="inner_three[1][0]"> 
     <a>+</a> 
     </div> 
     <div class="repeatable"> 
     <input name="level_three[1][1]"> 
     <input name="inner_three[1][1]"> 
     <a>+</a> 
     </div> 
     <div class="repeatable"> 
     <input name="level_three[1][2]"> 
     <input name="inner_three[1][2]"> 
     <a>+</a> 
     </div> 
     <input name="level_two[1]"> 
     <a>+</a> 
    </div> 
    <input name="level_one"> 
    <a>+</a> 
    </div> 
</form> 

我們可以有任意數量的repeatable秒。在這個例子中共有3個等級。它可以是1,2,3,4或任何數字。

+1

顯示你的努力。 – BenG

+0

@BenG,我剛剛考慮過,寫在紙上沒有成功。 –

回答

0
$(function(){ 

    $('form > .repeatable').each(function(l1_Index, l1_elem){ 
     $('> .repeatable', l1_elem).each(function(l2_Index, l2_elem){ 
      $('> .repeatable', l2_elem).each(function(l3_Index, l3_elem){ 
       $('input', l3_elem).each(function(input_Index, input_elem){ 

       var computed = (input_Index === 0 ? 'level_three' : 'inner_three') + 
         '[' + l1_Index + ']' + '[' + l2_Index + ']' ; 

       $(input_elem).attr('name', computed); 

       }); 
      }); 
     }); 
    }); 
}); 

在這裏看到的代碼示例https://jsbin.com/colocunoqo/edit?html,js,output

附:像角任何模板LIB將使這個超級容易讓你

編輯:遞歸https://jsbin.com/sisivucaxe/edit?html,js,output

+0

謝謝你的解決方案。正如我在最後一句中所說的,「可重複」的數目是未知的。您能否請編輯未知數量的「可重複」的帖子?先謝謝你。 –

+0

第二個鏈接可以幫助你嗎? – bresleveloper