javascript - 如何获取在表单标签内选中的复选框的数量并在进度条中显示百分比?

标签 javascript jquery html css

我想根据选中的checkboxes 的数量来更新进度条。它应该在 checkboxes 选中和取消选中时不断更新。最好使用它的 id 来识别进度条。

这是我的 Html 代码

<ul>
  <li><input type="checkbox" id="select_all"/> Selecct All</li>
  <li><input class="checkbox" type="checkbox">  Item 1</li>
  <li><input class="checkbox" type="checkbox">  Item 2</li>
  <li><input class="checkbox" type="checkbox">  Item 3</li>
  <li><input class="checkbox" type="checkbox">  Item 4</li>
  <li><input class="checkbox" type="checkbox">  Item 5</li>
  <li><input class="checkbox" type="checkbox">  Item 6</li>
</ul>
<div class="progress">
  <span class="progress-bar progress-bar-striped bg-success" id="CheckProgress" role="progressbar" style="width: 0%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></span>
</div>

这是我的javascript

$(document).ready(function () {
  var count = 0;
  var checked = 0;
  function countboxes() {
    count = $("input[type='checkbox']").length;
    console.log(count);
  }
  countboxes();
  $(":checkbox").click(countBoxes);
  function countChecked() {
    checked = $("input:checked").length;
    var percentage = parseInt(((checked / count) * 100));
    $(".CheckProgress").progress({
      value: percentage
    });
    $("#CheckProgress").css("width", percentage + "%");
  }
  countChecked();
  $(":checkbox").click(countChecked);
});

最佳答案

首先,您定义的函数名称为 countboxes(),而不是 countBoxes(),并且 JS 区分大小写。此外,jQuery 中没有默认的 progress() 方法,jQueryUI 或 Bootstrap 中也没有。您也不需要它,因为您所做的只是将进度条的宽度设置为给定的百分比值。

要以最简单的方式执行此操作,您只需使用 change 事件处理程序并计算出选中框占总数的百分比。然后你可以设置进度条的宽度。试试这个:

$(document).ready(function() {
  var $checkboxes = $('.checkbox');
  var $progress = $('#CheckProgress');
  var total = $checkboxes.length;
  
  $checkboxes.on('change', function() {
    var checked = $checkboxes.filter(':checked').length;
    var progressWidth = (checked / total) * 100;
    $('.progress-bar').css('width', progressWidth + '%');
  });
});
.progress-bar { width: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" />
<ul>
  <li><input type="checkbox" id="select_all" /> Selecct All</li>
  <li><input class="checkbox" type="checkbox"> Item 1</li>
  <li><input class="checkbox" type="checkbox"> Item 2</li>
  <li><input class="checkbox" type="checkbox"> Item 3</li>
  <li><input class="checkbox" type="checkbox"> Item 4</li>
  <li><input class="checkbox" type="checkbox"> Item 5</li>
  <li><input class="checkbox" type="checkbox"> Item 6</li>
</ul>
<div class="progress">
  <span class="progress-bar progress-bar-striped bg-success" id="CheckProgress" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></span>
</div>

关于javascript - 如何获取在表单标签内选中的复选框的数量并在进度条中显示百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305368/

相关文章:

javascript - 有没有我可以用来要求用户下载现代浏览器的轻量级库?

javascript - 使用 jQuery 加载脚本后无法使用 javascript 函数

javascript - 基于下拉的onclick按钮href

html - 使用 CSS 隐藏链接上的工具提示

html - 2(或更多)列照片网格保持纵横比

javascript - 在ajax jquery中显示json响应,

javascript - 获取对象的 "class"属性,拆分为字符串数组

javascript - 使用 webpack 为捆绑代码添加样式

javascript - 将图表点绘制为实时流 : Highcharts

javascript - 如何通过单击按钮添加html输入