【问题标题】:Toggling a group of checkboxes from a master checkbox从主复选框切换一组复选框
【发布时间】:2020-12-14 07:29:37
【问题描述】:

我有以下 JS 实际工作并检查我所有的复选框,如果顶部的一个被选中(当前有效)因此我无法通过重复相同的过程来取消选中它们(取消选中第一个框不是不可选中的)

每次未选中或选中复选框时,我都有以下代码实际调用我的函数:

function refresh_checkbox_list(){
    // document.getElementById('gdr_select_users').setAttribute("checked");

    (function() {
    var aa = document.querySelectorAll("input[type=checkbox]");
    for (var i = 0; i < aa.length; i++){
        aa[i].checked = true;
    }
})()
}

<input type="checkbox" name="gdr_select_all_users" id="gdr_select_all_users" onchange="refresh_checkbox_list()">
<input type="checkbox" name="gdr_select_users" id="gdr_select_users">

只是说:我是一个真正的 JavaScript 菜鸟,我知道我将如何在 PHP 中处理它,所以它会检查和取消检查,但我不知道“if”语句在 JS 中是如何工作的,这是我的实际问题..

我在考虑一个 if 语句,它检查我的第一个框是否被选中,然后检查所有其他框,然后是另一个完全相反的语句。对吧?

我必须承认我在这个网站上也发现了那个JS(一个有类似案例的用户)

【问题讨论】:

  • 您似乎正在寻找一个单选按钮。不需要 javascript,可以使用纯 html 完成。
  • 您好,感谢您的回复!我尝试过使用单选按钮,但事实是如果只有一个单选按钮,您就无法取消选中单选按钮。我的意思是,要使其正常工作,您至少需要 2 个单选按钮,在这种情况下,我只有一个单选按钮,它会在顶部,而不是在我的用户列表中(这些将是检查特定用户的复选框,我知道怎么做,所以这边没有问题)。由于我必须实时检查我的用户输入,我不能使用 HTML 或 PHP,我必须同时使用 PHP 和 Javascript。但无论如何感谢你的想法! :)
  • 只要使用&lt;input value="none" checked /&gt;

标签: javascript php checkbox


【解决方案1】:

不要使用true,而是使用#gdr_select_all_users的选中状态。

还需要从循环中排除#gdr_select_all_users。可以在查询选择器中使用not(),或者更好地为用户复选框应用一个通用类

function refresh_checkbox_list(){
    // get checked state of the "check all" box 
    let allChecked = document.getElementById('gdr_select_all_users').checked;
    (function() {
    var aa = document.querySelectorAll("input[type=checkbox]:not(#gdr_select_all_users)");
    for (var i = 0; i < aa.length; i++){
        // set other checkboxes to same state as the "check all"
        aa[i].checked = allChecked;
    }
})()
}
Check all:<input type="checkbox" name="gdr_select_all_users" id="gdr_select_all_users" onchange="refresh_checkbox_list()">

<br>
User 1<input type="checkbox" name="gdr_select_users_1" >
<br>
User 2<input type="checkbox" name="gdr_select_users_2" >

【讨论】:

  • 哦!它工作得很好!非常感谢您的帮助 !我很抱歉再次提出这样一个愚蠢的问题。顺便说一下,我找到了一些关于条件如何工作的文档,但我不太理解,所以如果我想检查一个声明,它就像“var mystatement = == ; 是否正确?感谢您的所有帮助!
  • 废话...我试图理解你的代码,现在我明白我是多么愚蠢,而不是仅仅获取我的顶部复选框的值,然后将其应用于其他复选框,我所做的是检查我的顶部复选框,然后将自定义值“选中”设置为其他复选框,这样我无法删除它......谢谢!编辑——我也不知道在应用值时我必须排除第一个复选框(在顶部),这似乎也是逻辑。
猜你喜欢
  • 2018-08-06
  • 2013-07-12
  • 2012-07-03
  • 2017-01-03
  • 2023-03-08
  • 1970-01-01
  • 2020-05-13
  • 2012-12-06
  • 1970-01-01
相关资源
最近更新 更多