带有单选框和复选框的 JavaScript "Check All"

标签 javascript html forms checkbox radio-button

我在 JS 中有一个函数可以检查表单中的所有复选框:

function CheckAll(chk){
    for (i = 0; i < chk.check.length; i++)
        if (chk.All.checked==true){
            chk.check[i].checked = true;
            chk.check[i].disabled = true;
        }
        else {
            chk.check[i].disabled = false;
            chk.check[i].checked = false;
        }
}

我最近在我的表单中添加了一些单选按钮,我的问题是:这个功能是否也会激活所有我的单选按钮 (我知道只能选择一个单选按钮,但我不确定它在这样的脚本中是如何工作的......)?

在这里你可以找到我的表单代码:

<form name='MyForm'>
    <b>This is my Simple Form</b></br>
    </br>
    <input type='radio' name='parameter' value='ONE' checked='checked' />ONE<br/>
    <input type='radio' name='parameter' value='TWO' />TWO<br/>
    <input type='radio' name='parameter' value='THREE' />THREE<br/>
    <input type='radio' name='parameter' value='FOUR' />FOUR<br/>
    <input type='radio' name='parameter' value='FIVE' />FIVE<br/>
    <input type='radio' name='parameter' value='SIX' />SIX<br/>
    <input type='radio' name='parameter' value='SEVEN' />SEVEN<br/>
    <script>
        document.write("</br>");
        var count
        var check_value = new Array()
        check_value[0] = "001"
        check_value[1] = "002"
        check_value[2] = "003"
        check_value[3] = "004"
        for(count in check_value){
            var checkbox = "<input type='checkbox' name='check' value='"+check_value[count]+"' />"
            document.write(checkbox + check_value[count] + "  ");
        }
        document.write("<input type='checkbox' name='All' value='All' onClick='CheckAll(document.MyForm);' /> All");
    </script>
    </br>
    </br>
    <input type=button value='Ok' onClick='foo(document.MyForm);'>
</form>

如果这不能如我所愿,我该如何解决?

最佳答案

测试就这么简单:http://jsfiddle.net/yk9uD/

内容:

<form name='MyForm'>
    <b>This is my Simple Form</b></br>
    </br>
    <input type='radio' name='parameter' value='ONE' checked='checked' />ONE<br/>
    <input type='radio' name='parameter' value='TWO' />TWO<br/>
    <input type='radio' name='parameter' value='THREE' />THREE<br/>
    <input type='radio' name='parameter' value='FOUR' />FOUR<br/>
    <input type='radio' name='parameter' value='FIVE' />FIVE<br/>
    <input type='radio' name='parameter' value='SIX' />SIX<br/>
    <input type='radio' name='parameter' value='SEVEN' />SEVEN<br/>
    <script>
      function CheckAll(chk){
  for (i = 0; i < chk.check.length; i++) {
        if (chk.All.checked==true){
            chk.check[i].checked = true;
            chk.check[i].disabled = true;
        }
        else {
            chk.check[i].disabled = false;
            chk.check[i].checked = false;
        }
}
}
        document.write("</br>");
        var count;
        var check_value = new Array()
        check_value[0] = "001"
        check_value[1] = "002"
        check_value[2] = "003"
        check_value[3] = "004"
        for(count in check_value){
            var checkbox = "<input type='checkbox' name='check' value='"+check_value[count]+"' />"
            document.write(checkbox + check_value[count] + "  ");
        }
        document.write("<input type='checkbox' name='All' value='All' onClick='CheckAll(document.MyForm);' /> All");
    </script>
    </br>
    </br>
    <input type=button value='Ok' onClick='foo(some var);'>
</form>

问题的答案是:不,它不会选择所有单选按钮。

原因是您的代码仅迭代名称为 check 的输入:

for (i = 0; i < chk.check.length; i++) {

关于带有单选框和复选框的 JavaScript "Check All",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14276075/

相关文章:

javascript - 如何使用 JavaScript 获取 &lt;textarea&gt; 中的行数?

javascript - 禁用 CKEditor 缩进插件

javascript - Knockout.js:自定义绑定(bind)重置值

javascript - 鼠标悬停时关闭下拉菜单的 jQuery 插件

javascript - 导致不需要的递归行为的 JavaScript 函数错误

php - 使用 PHP 将多个 HTML 字段更新到 MySQL 数据库中

javascript - 多个 javascript 文件冲突

javascript - 在 Post 方法后重定向,expressjs

javascript - React-native 和 React-native-navigation 错误

html - 我如何包装 Flex 容器中的子元素?