如果表单中有多个复选框,如何通过当前选中的所有复选框?

时间:2013-08-08 02:55:29

标签: javascript html checkbox

这是我的代码:

<form action="test.php" method="post">
    <input type="checkbox" value="value 1" onClick="updateCards(this.value);">
    <input type="checkbox" value="value 2" onClick="updateCards(this.value);">
    <input type="checkbox" value="value 3" onClick="updateCards(this.value);">
    <input type="checkbox" value="value 4" onClick="updateCards(this.value);">
    <input type="checkbox" value="value 5" onClick="updateCards(this.value);">
</form>

如何获取当前选中的所有复选框?

5 个答案:

答案 0 :(得分:1)

尝试

<form id="myform" action="test.php" method="post">

然后

function getChcked(){
    var form = document.getElementById('myform');
    var chks = form.querySelectorAll('input[type="checkbox"]');
    var checked = [];
    for(var i = 0; i < chks.length; i++){
        if(chks[i].checked){
            checked.push(chks[i].value)
        }
    }
    return checked;
}

演示:Fiddle

答案 1 :(得分:1)

两种快捷方式可以为表单元素提供ID。获取对它的引用并遍历其所有子元素(这是所有复选框)并检查checked属性的值是什么。

您还可以为所有复选框命名并使用document.getElementsByClassName,然后循环搜索结果以检查checked属性。但是我认为IE8中可能不支持第二种方法,请不要引用我,但我会使用第一种方法。

像这样的东西

<form action="test.php" method="post" id="myForm">
  <input type="checkbox" value="value 1" onClick="updateCards(this.value);">
  <input type="checkbox" value="value 2" onClick="updateCards(this.value);">
  <input type="checkbox" value="value 3" onClick="updateCards(this.value);">
  <input type="checkbox" value="value 4" onClick="updateCards(this.value);">
  <input type="checkbox" value="value 5" onClick="updateCards(this.value);">
</form>

var getValues = function() {
  var nodes = document.getElementById("myForm").children;
  var checkedValues = [],
      length = nodes.length,
      i = 0;

  for(i;i<length;i++){
    if(nodes[i].checked)
    checkedValues.push(nodes[i].value);
  }

  return checkedValues;
};

答案 2 :(得分:0)

function getCheckedBoxes(chkboxName) {
  var checkboxes = document.getElementsByName(chkboxName);
  var checkboxesChecked = [];
  // loop over them all
  for (var i=0; i<checkboxes.length; i++) {
     // And stick the checked ones onto an array...
     if (checkboxes[i].checked) {
        checkboxesChecked.push(checkboxes[i]);
     }
  }
  // Return the array if it is non-empty, or null
  return checkboxesChecked.length > 0 ? checkboxesChecked : null;
}

// Call as
var checkedBoxes = getCheckedBoxes("mycheckboxes");

Live DEMO

也可以试试这个

$("#clickme").click(function(e){


    var selected = $("#checkboxes input:checked").map(function(i,el){return el.name;}).get();


    alert("selected = [" + selected + "]\nas string = \"" + selected.join(";") + "\"");


});

答案 3 :(得分:0)

这是一种做同样的快捷方式:

var nodeArray = document.querySelectorAll('form input:checked'), 
    i = nodeArray.length, selected = [];
while(i--) selected.push(nodeArray[i].value);

答案 4 :(得分:0)

如果你只使用jQuery,这会更简单:

  function GetChecked()
  {
     return $("input:checked");
  }