【问题标题】:how to check if the listbox items are selected or not?如何检查列表框项目是否被选中?
【发布时间】:2017-01-03 10:37:37
【问题描述】:

您好,我正在开发一个 asp.net 应用程序。我有一个列表框,其中包含数据库中的某些值。在列表框中,我有带有复选框的项目并选择所有选项。它基本上是多选列表框。我能够显示在警报框中选择的项目数。如果我选中全选,我可以使用长度属性显示项目数。每当我取消选中全选选项时,我都想显示 0,因为所有复选框都将被取消选中。我尝试了很多方法仍然无法正常工作。这是我的代码。 这些是参考。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css"
    rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
<link href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
<script src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"></script>

下面是我的javascript代码

$(function () {
          $('[id*=ddlvendors]').multiselect({
              includeSelectAllOption: true
          });
      });

这是我从列表框中查找所选项目的代码。

 $(".limitedNumbSelect2 option").each(function () {
                var val = $(this).val();
                var tempVal = $(".limitedNumbSelect2").val();

                if (tempVal.indexOf(val) >= 0 && selected.indexOf(val) < 0) {
                    selected.push(val);
                } else if (tempVal.indexOf(val) < 0 && selected.indexOf(val) >= 0) {
                    selected.splice(selected.indexOf(val), 1);
                }
            })
            alert(selected.length);

每当我取消选中选择所有我的警报都不会触发。我可以对此提出一些建议吗?谢谢大家。

【问题讨论】:

  • 你能为我们设置一个 jsfiddle 吗?我确定我可以帮你解决这个问题,但我需要查看一些 html
  • 是的。谢谢
  • 我发现设置小提琴的困难。我运行时无法获取列表框。这是我的 asp.net 代码。
  • 我只是在谷歌上搜索。我得到的链接与我的情况几乎相同。 jsfiddle.net/wDnAd/1 当我取消选中全选复选框时,我想提醒 0。

标签: javascript c# asp.net listbox


【解决方案1】:

我使用 vanilla JS 的解决方案是简单地监听 change-event,如果输入是否有 target.checked,则触发必要代码:https://jsfiddle.net/67dnnhva/

var allCheckboxes = document.querySelectorAll(".allcheckboxes input");
var checkAllElement = document.querySelector("#chkall");

checkAllElement.addEventListener("change", toggleSelectAll);

function toggleSelectAll(input) {
    if (input.target.checked) {
    allCheckboxes.forEach(function(input) {
        input.checked = true;
    });
  } else {
    allCheckboxes.forEach(function(input) {
      input.checked = false;
    });
    alert("hello");
  }
}

【讨论】:

  • 非常感谢...这正在工作...所以这是实现此目的的唯一方法吗?我需要重构我的代码。
  • 你可以用 jQuery 以类似的方式做到这一点,但在我看来,jQuery 正在消亡,而在 vanilla 中这样做同样容易,而且更适合未来:) 如果你想要一个 jQuery-例如,我也可以为您制作一个
  • 是的。如果我得到 jquery 代码,它将很容易集成到我的代码中。非常感谢您的帮助。
猜你喜欢
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多