2013-09-01 132 views
0

我想收集使用name =「Item [fields] [x]」作爲數組提交的輸入列表。 我的形式:循環到輸入數組字段中,並使用jquery更改輸入字段

<form id="form2" name="form2" method="post" action=""> 
    <input id="player_name661" type="text" name="Item[fields][1]" value=""><a href="#" id="clone1" name="dup1" >Use same</a><br /> 
    <input id="player_name662" type="text" name="Item[fields][2]" value=""><a href="#" id="clone2" name="dup2" >Use same</a><br /> 
    <input id="player_name663" type="text" name="Item[fields][3]" value=""><a href="#" id="clone3" name="dup3" >Use same</a><br /> 
    <input id="player_name664" type="text" name="Item[fields][4]" value=""><br /> 
    <input id="player_name665" type="text" name="Item[fields][5]" value=""><br /> 
    .... 
    <input id="player_name66x"" type="text" name="Item[fields][x]" > 
    </form> 
</form> 

的jQuery:

for ($i=1; i < (Item[fields].length+1)/3; $i++) { 
    var myinput = $("Item[fields][1]").val(); 
    $("input[name^='fields][1+3(i)]").val(myinput); 
} 

變化在3 注倍數來:我只能用name屬性,沒有ID或類。所以點擊:

dup1, clone field[1] into [4],[7] ...[1+3(i)] 

dup2, clone field[2] into [5],[8],...[2+3(i)] 

dup3, clone field[3] into [6],[9],...[3+3(i)] 
+0

做投入? – Sergio

回答

3

試試這個:

var all_inputs = $("input[name^=Item\\[fields\\]]"); 
for (i = 0; i < all_inputs.length; i++) { 
    if (i % 3 == '0') { 
     var val = all_inputs.eq(i).val(); //get the new value for each group of 3 
    } 
    all_inputs.eq(i).val(val); //assign the value to inputs in this group of 3 
} 

演示你想給第一各3的值,以各組3的第二和第三here

+0

輸入[name^= Item \\ [fields \\]「)中是否缺少支架? all_inputs.length返回零 –

+0

@AlbuquerqueWebDesign,是的,它「是」:) - 更正。這是你在找什麼? – Sergio

+0

這非常接近!謝謝,我想這是這樣的 'if(i%3 == 0){var val = all_inputs.eq(i).val();} if(i%3 == 1){var val = all_inputs.eq(i).val();} if(i%3 == 2){var val = all_inputs.eq(i).val();} 因爲, dup1,clone字段[1] [i]] dup3,[4],[7] ... [1 + 3(i)] dup2,克隆字段[2]轉換爲[5],[8]克隆領域[3]到[6],[9],... [3 + 3(I)]' 但它不工作.. 和腳本還是返回0,但JSFIDLE它的工作原理: –