使用javascript收集多个没有表单标签的复选框值

时间:2014-07-15 18:44:03

标签: javascript html checkbox

我正在为MyBB制作一个插件,在那里我必须收集所有选中“复选框”的值,每个复选框都有不同的名称/ ID&不幸的是这些复选框没有放在任何表格标签下,所以我怎么能这样做? 看看下面的代码,如果我将表单标记放在第一行,但是如果我将表单标记放在所有复选框下面它没有返回任何内容,那么这段代码工作正常(实际上这正是我必须处理MyBB中的复选框) 谢谢,

<input type="checkbox" name="chb1" value="html" />HTML<br/>
<input type="checkbox" name="chb2" value="css" />CSS<br/>
<input type="checkbox" name="chb3" value="javascript" />JavaScript<br/>
<input type="checkbox" name="chb4" value="php" />php<br/>
<input type="checkbox" name="chb5" value="python" />Python<br/>
<input type="checkbox" name="chb6" value="net" />Net<br/>

<form action="script.php" method="post">
  <input type="button" value="Click" id="btntest" />
</form>

<script type="text/javascript"><!--
function getSelectedChbox(frm) {
  var selchbox = [];        
  var inpfields = frm.getElementsByTagName('input');
  var nr_inpfields = inpfields.length;
   for(var i=0; i<nr_inpfields; i++) {
    if(inpfields[i].type == 'checkbox' && inpfields[i].checked == true)    selchbox.push(inpfields[i].value);
  }
  return selchbox;
}


document.getElementById('btntest').onclick = function(){
  var selchb = getSelectedChbox(this.form);   
  alert(selchb);
}
//-->

</script>

1 个答案:

答案 0 :(得分:2)

<强> >>>Test the Fiddle<<<

嗯......使用 JavaScript:

function getCheckboxesValues(){
    return [].slice.apply(document.querySelectorAll("input[type=checkbox]"))
           .filter(function(c){ return c.checked; })
           .map(function(c){ return c.value; });
}

document.getElementById("btntest").addEventListener("click", function(){
    console.log(getCheckboxesValues());
});