从输入字段获取正确格式的同名字段值

问题描述:

我有一些输入字段与循环中的数组具有相同的名称。从输入字段获取正确格式的同名字段值

喜欢的东西:

<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

您可以使用此创建输入:

<?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>

您可以通过名字得到所有车辆包含您的串选择*

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

这种方式给了我以下错误:Uncaught TypeError:无法读取属性'推'未定义---另一件事,你的意思是'输入[名称* =“车辆”]' - 对不对? – dwdawdawdaw

+0

是的!以数组形式创建您的可变车辆。请尝试我的更新。 –

+0

@dwdawdawdaw是这个解决方案解决你的错误? –

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