我如何全面检查和选择?

我有复选框并选择选项,需要总计它们。

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); }); 
  
1 2 3 Please Select 1 2 3 Please Select 1 2 3

您应该将change事件绑定到count_checkedcount_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); }); }); 
  
1 2 3

选择器不正确:

 $('input[name="checks[]"]'); //----------------------^--------missed a closing ']' 

您需要做的就是修改总计逻辑,以便在inputselect元素的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); } }); 
  
1 2 3