如果checkbox
为#template-selection-review
,我有多个checkbox
我试图在selected
中写入数据。选中后,我希望使用data-template
中的数据并将其放入array
,这样如果选择了多个选项,它就会显示出来。
我做错了什么?
$('.tp-template-check').on('change', function() {
var templateSelection = {};
$('.tp-template-check:checked').each(function() {
templateSelection[$(this).data('template')] = $(this).val();
$('#template-selection-review').html(templateSelection);
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="tp-template-check" data-template="Winter">
<input type="checkbox" class="tp-template-check" data-template="Spring">
<input type="checkbox" class="tp-template-check" data-template="Summer">
<input type="checkbox" class="tp-template-check" data-template="Fall">
<div id="template-selection-review"></div>
答案 0 :(得分:2)
如果您要在显示的代码段中使用object
,则必须将value
设置为复选框,然后将结果对象templateSelection
转换为字符串,然后再将其打印到{ {1}}:
#template-selection-review
否则你可以使用数组,那么你不需要任何值:
$('#template-selection-review').html(JSON.stringify(templateSelection));
希望这有帮助。
使用对象的代码段
templateSelection.push($(this).data('template'));
$('.tp-template-check').on('change', function() {
var templateSelection = {};
$('.tp-template-check:checked').each(function() {
templateSelection[$(this).data('template')] = $(this).val();
});
$('#template-selection-review').html(JSON.stringify(templateSelection));
})
使用数组的代码段
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="tp-template-check" data-template="Winter" value='checkbox1'>
<input type="checkbox" class="tp-template-check" data-template="Spring" value='checkbox2'>
<input type="checkbox" class="tp-template-check" data-template="Summer" value='checkbox3'>
<input type="checkbox" class="tp-template-check" data-template="Fall">
<div id="template-selection-review"></div>
$('.tp-template-check').on('change', function() {
var templateSelection = [];
$('.tp-template-check:checked').each(function() {
templateSelection.push($(this).data('template'));
});
$('#template-selection-review').html(templateSelection.join('<br>'));
})
答案 1 :(得分:1)
首先,获取复选框。下一个map
每个条目只返回数据集值。最后,join
结果:
$('.tp-template-check').on('change', function() {
$('#template-selection-review').html(
Array.from($('.tp-template-check:checked'))
.map(a => a.dataset['template'])
.join(', ')
)
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="tp-template-check" data-template="Winter">
<input type="checkbox" class="tp-template-check" data-template="Spring">
<input type="checkbox" class="tp-template-check" data-template="Summer">
<input type="checkbox" class="tp-template-check" data-template="Fall">
<div id="template-selection-review"></div>
&#13;
答案 2 :(得分:1)
$('.tp-template-check').on('change', function() {
var templateSelection = []; // the selected items array
$('.tp-template-check:checked').each(function() {
templateSelection.push($(this).data('template')); // accumulate the selected items
});
$('#template-selection-review').html("Selected Items:<br>" + templateSelection.join('<br>')); // show result after the accumulation is done
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="tp-template-check" data-template="Winter">
<input type="checkbox" class="tp-template-check" data-template="Spring">
<input type="checkbox" class="tp-template-check" data-template="Summer">
<input type="checkbox" class="tp-template-check" data-template="Fall">
<div id="template-selection-review"></div>
&#13;
答案 3 :(得分:1)
请你试试下面的解决方案
我理解问题的方式是,你试图表现出“冬天,秋天”。如果我错了,请提供您需要的样本输出,以便可以再试一次。
$('.tp-template-check').on('change', function() {
var templateSelection = [];
$('.tp-template-check:checked').each(function() {
templateSelection.push($(this).data('template'));
});
$('#template-selection-review').html(templateSelection.join());
})