2017-10-13 73 views
0

我有一些輸入字段與循環中的數組具有相同的名稱。從輸入字段獲取正確格式的同名字段值

喜歡的東西:

<input name="vehicle[$i][amount]" ...> // $i = 1 
<input name="vehicle[$i][name]" ...> 

<input name="vehicle[$i][amount]" ...> // $i = 1 
<input name="vehicle[$i][name]" ...> 

<input name="vehicle[$i][amount]" ...> // $i = 1 
<input name="vehicle[$i][name]" ...> 

現在我想用的名字讓所有輸入的值「車輛」

我想應該是的輸出是這樣的:

[0] => 'amount' => (for example) 5 
     'name' => BMW 
[1] => 'amount' => (for example) 15 
     'name' => Audi 

等等。

我該如何得到這個?我已經嘗試了很多東西。

喜歡的東西:

var vehicle; 
    $('input[name="product"]').each(function() { 
     vehicle.push($(this).val()); 
    }); 

但是這和類似的解決方案我試過沒有爲我工作。

謝謝你的幫助,並對我的英語不好!

+0

金額應該是您輸入的'值',就像這個'' – SubjectDelta

+0

Are你用PHP創建你的輸入? – SubjectDelta

+0

是的,我用PHP創建它。名稱和數量是兩個不同的東西。 這不是說有一個現有的名稱,我想給一個數量值。 我想用新值創建一個新名稱。 我在我的問題中犯了一個錯誤。所有這些輸入字段都具有相同的$ i值。示例中全部爲「1」。 – dwdawdawdaw

回答

0

您可以使用此創建輸入:

<?php 
for($i = 0; $i < 3; $i++) { 
    print('<div class="vehicle">'); 
    print('<input name="amount">'); 
    print('<input name="name">'); 
    print('</div>'); 
} 
?> 

然後...

var vehicle = []; 
 
$('div.vehicle').each(function() { 
 
    var name = $(this).children('input[name="name"]').val(); 
 
    var amount = $(this).children('input[name="amount"]').val(); 
 
    vehicle.push({ name: name, amount: amount }); 
 
}); 
 

 
console.log(vehicle);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="vehicle"> 
 
    <input type="text" name="name" value="BMW"> 
 
    <input type="number" name="amount" value="5"> 
 
</div> 
 
<div class="vehicle"> 
 
    <input type="text" name="name" value="Audi"> 
 
    <input type="number" name="amount" value="3"> 
 
</div> 
 
<div class="vehicle"> 
 
    <input type="text" name="name" value="Ford"> 
 
    <input type="number" name="amount" value="6"> 
 
</div>

0

您可以通過名字得到所有車輛包含您的串選擇*

var vehicle = []; 
$('input[name*="Audi"]').each(function() { 
    vehicle.push($(this).val()); 
}); 
+0

這種方式給了我以下錯誤:Uncaught TypeError:無法讀取屬性'推'未定義---另一件事,你的意思是'輸入[名稱* =「車輛」]' - 對不對? – dwdawdawdaw

+0

是的!以數組形式創建您的可變車輛。請嘗試我的更新。 –

+0

@dwdawdawdaw是這個解決方案解決你的錯誤? –

0
You can try this: 

<input name="titles[]"> 
<input name="titles[]"> 
​<button>submit</button>​​​​​​​​​​​​​​​​​​​​​​​ 

With this jQuery 

// click handler 
function onClick(event) { 
    var titles = $('input[name^=titles]').map(function(idx, elem) { 
    return $(elem).val(); 
    }).get(); 

    console.log(titles); 
    event.preventDefault(); 
} 

// attach button click listener on dom ready 
$(function() { 
    $('button').click(onClick); 
}); 
+0

以及只有一半的作品。有6個領域。 現在,它給我的價值觀回一個簡單的數組:像這樣: [ 「1」, 「2」, 「3」, 「4」, 「5」, 「6」] 但我想它像這樣:[0] = amount =>「1」,price =>'2' [1] = amount =>「3」,price =>'4' – dwdawdawdaw

+0

@dwdawdawdaw如果你想要這種類型的結果, ()方法在JavaScript –

+0

你能給我一個例子如何過濾它在這段代碼中? jquery文檔。只給我css的解決方案,所以我有點困惑 – dwdawdawdaw