尝试获取div中所有输入的值。输入是产品的选项。
产品div ID是这样的:
<div class="row border" id="p-$productID">
(产品)列表中的每个唯一输入ID都是这样生成的:
p-$productID-$otherkeyThatIsNeverTheSame
我们从点击按钮的数据名称值中获取$ productID。
下面我试图找到@RomainGuidoux如何解释它的方式:jQuery Selector: Id Ends With?。
似乎无法使这项工作。
$('.btn#add_item').on('click', function () {
var prod = $(this).attr('data-name');
var allVal = '';
$("[id^='p-'+prod+'] > input").each(function() {
allVal += '&' + $(this).attr('name') + '=' + $(this).val();
});
alert(allVal);
});
迭代是这样的:
<select class="form-control" id="p-1-1" name="A">
<option>Type broodje</option>
<option value="Witte pistolette">Witte pistolette</option>
<option value="Bruine pistolette">Bruine pistolette</option>
</select>
<select class="form-control" id="p-1-2" name="B">
<option>Boter</option>
<option value="Met boter">Met boter</option>
<option value="Zonder boter">Zonder boter</option>
</select>
<select class="form-control" id="p-1-3" name="C">
<option>beleg</option>
<option value="Standaard belegd">Standaard belegd </option>
<option value="Dubbel Belegd">Dubbel Belegd</option>
</select>
答案 0 :(得分:1)
首先,您的选择器样式无效。
如果您正在尝试获取输入的名称和值。像在中一样;
<button id="add_item" type="button" data-name="3"> Add Item </button>
<div id="p-3-12">
<input type="text" name="productName" value="Square" />
<input type="text" name="productQuantity" value="12" />
</div>
<div id="p-3-5565">
<input type="text" name="itemName" value="Cup" />
<input type="text" name="itemQuantity" value="5" />
</div>
然后你可以试试。
$('.btn#add_item').on('click', function () {
var prodId = $(this).attr('data-name');
var allVal = '';
var pres = 'p-' + prodId;
$("[id^="+pres+"] > input").each(function() {
allVal += '&' + $(this).attr('name') + '=' + $(this).val();
});
alert(allVal);
});
就像这个SAMPLE
一样但是,如果还希望迭代选择选项,您可以尝试选择多个选择器,例如..
$("div[id^="+pres+"] > input, select[id^="+pres+"]").each(function() {
allVal += '&' + $(this).attr('name') + '=' + $(this).val();
});
就像这个SAMPLE
一样<强>更新强>
对于空输入或选择,我想这会做..
$("div[id^="+pres+"] > input, select[id^="+pres+"]").each(function() {
if ($(this).val().length > 0) {
allVal += '&' + $(this).attr('name') + '=' + $(this).val();
}
});
就像这个SAMPLE
一样