我如何全面检查和选择?
我有复选框并选择选项,需要总计它们。
count_checked
计算选中的多少checked& count_selected
值。
我如何正确计算$("#count_total")
?
$(document).ready(function() { var $checkboxes = $('input[name="checks[]"'); $checkboxes.change(function() { var count_checked = $checkboxes.filter(':checked').length; $('#count_checked').val(count_checked); }); $('#form').on('change', '.price', function() { var count_selected = 0; $('#form option:selected').each(function() { count_selected += parseInt($(this).val()) || 0; $('#count_selected').val(count_selected); }); }); var a = $('#count_checked').val(); var b = $('#count_selected').val(); $("#count_total").val(a + b); });
您应该将change事件绑定到count_checked
和count_selected
元素。
$('#count_checked, #count_selected').change(function() { var a = +$('#count_checked').val(); var b = +$('#count_selected').val(); $("#count_total").val(a + b); });
然后在更新值时触发change
事件
$(document).ready(function() { var $checkboxes = $('input[name="checks[]"]'); $checkboxes.change(function() { var count_checked = $checkboxes.filter(':checked').length; $('#count_checked').val(count_checked).trigger('change'); }); $('#form').on('change', '.price', function() { var count_selected = 0; $('#form option:selected').each(function() { count_selected += parseInt($(this).val()) || 0; }); $('#count_selected').val(count_selected).trigger('change'); }); $('#count_checked, #count_selected').change(function() { var a = +$('#count_checked').val(); var b = +$('#count_selected').val(); $("#count_total").val(a + b); }); });
选择器不正确:
$('input[name="checks[]"]'); //----------------------^--------missed a closing ']'
您需要做的就是修改总计逻辑,以便在input
和select
元素的change
事件下运行。 试试这个:
$(document).ready(function() { $('input[name="checks[]"]').change(updateTotal); $('#form').on('change', '.price', updateTotal); function updateTotal() { var count_checked = $('input[name="checks[]"]:checked').length; $('#count_checked').val(count_checked); var count_selected = 0; $('#form option:selected').each(function() { count_selected += parseInt($(this).val(), 10) || 0; }); $('#count_selected').val(count_selected); $("#count_total").val(count_checked + count_selected); } });