在PHP和JS中使用复选框

Working with checkbox in PHP and JS

本文关键字:复选框 JS PHP      更新时间:2023-09-26

我正在创建一个带有单选按钮和复选框的表单。我想用javascript onsubmit和php验证表单。为了使php工作,我必须在名称中使用[]来编写复选框和单选按钮(例如)。我搜索了其他主题,发现我可以为单选按钮设置一个默认的选中值,以避免人们没有选择值的可能性。这很好。然而,我还需要确保人们勾选的复选框不超过3个。

不能这样做
var count = 0;
for (x=0; x<document.fic_rec.rec_genre.length; x++){
    if (document.fic_rec.rec_genres[x].checked){
        count++;
    }
}
if (count==0){
    rec_error += "at least 1 genre; ";
}
else if (count>3){
    rec_error += "no more than 3 genres; ";
}   

我得到一个错误说"无法读取属性'长度'的未定义。我的HTML代码看起来像这样:

<ul class="sub_ul">
<li class="sub">
<input type="checkbox" name="rec_genres[]" id="action"value="action" />
<label for="action">Action/Adventure</label></span><li class="sub"><u>Alternative reality</u></li>
<li class="sub_sub"><input type="checkbox" name="rec_genres[]" id=au_history     value="au_history" />
<label for="au_history">AU History</label></li><li class="sub_sub"><input type="checkbox" name="rec_genres[]" id=au_universe value="au_universe" />
<label for="au_universe">AU Universe</label></li><li class="sub_sub"><input type="checkbox" name="rec_genres[]" id=au_other     value="au_other" />

等等

帮助!谢谢! !

使用elements-collection来访问这些元素:

document.fic_rec.elements['rec_genres[]']

请注意:如果找到的元素多于一个,将返回一个nodeList。
如果只有一个元素具有给定的名称,它将返回元素本身,而不是一个nodeList。

您也可以使用querySelectorAll()(不支持IE<8)

document.querySelectorAll('form[name="fic_rec"] input[name="rec_genres[]"]')

…无论找到多少个元素,这都会返回一个nodeList。


对评论的回答:

var radio_count = 0;         
for (var i=0;i<document.fic_rec.elements['rec_pub_length[]'].length;i++) 
{ 
  if (document.fic_rec.elements['rec_pub_length[]'][i].checked) 
  { 
    radio_count = 1; 
    break;
  } 
} 
if (radio_count != 1) { rec_error += "story length; "; }