【发布时间】:2018-05-24 03:26:04
【问题描述】:
我有一组复选框,我想将它们包含一对数字的值添加到数组中,然后使用它们。问题是数组只取最后一个复选框的值。我挣扎了很多,但无法弄清楚。
https://jsfiddle.net/zfwbtomu/
HTML:
<div class="scrolly-option" id="input-option20">
<div>
<label>
<input type="checkbox" name="option[20][]" value="20,64">
<span>Mint</span> </label>
</div>
<div>
<label>
<input type="checkbox" name="option[20][]" value="20,63">
<span>Maroon</span> </label>
</div>
<div>
<label>
<input type="checkbox" name="option[20][]" value="20,62">
<span>Ecru</span> </label>
</div>
</div>
<input type="checkbox" class="option1" name="" value="" />
<div class="result"></div>
<button type="button" class="button-cart">ADD</button>
JS:
$('.button-cart').on('click', function(e) {
e.preventDefault;
var firstoptoins = [];
$(".scrolly-option input[type=checkbox]").each(function () {
if ($(this).prop('checked')) {
var arr = $(this).val().split(',');
firstoptoins[arr[0]] = arr[1];
}
});
console.log(firstoptoins);
$('.scrolly-option .checkbox input[type=checkbox]').prop("checked", false);
$.each(firstoptoins, function (o, v) {
$('.option1').attr("name", 'option[' + o + '][]');
$('.option1').attr("value", v);
$('.option1').prop('checked', true);
console.log('o: ' + o + ' v: ' + v);
});
});
【问题讨论】:
-
你希望你的数组如何格式化?您正在使用
20作为数组上所有元素的索引,这就是您只获得最后一个值的原因。 -
天啊!你是对的!
-
是的,@Eddie 就在那里,您将第一个
value用作index用于firstoptions数组,因此所有值都将复制到同一个索引