我有一个关于复选框的问题.
<form method="post"> I speak the following languages: <input type="checkBox" name="lang[]" value="en">English<br /> <input type="checkBox" name="lang[]" value="fr">Français<br /> <input type="checkBox" name="lang[]" value="es">Español<br /> </form>
是否有必要将复选框命名为lang [](使用数组),或者我可以为每个复选框指定一个单独的名称,例如:
<form method="post"> I speak the following languages: <input type="checkBox" name="lang_en" value="en">English<br /> <input type="checkBox" name="lang_fr" value="fr">Français<br /> <input type="checkBox" name="lang_es" value="es">Español<br /> </form>
问题1我认为两者都有效,如果是,你什么时候决定使用哪个?
问题2我正在使用上面列出的第二种方法,因此我可以使用PHP来检测选择哪个复选框,使用类似于if(isset($_ POST [‘lang_en’]))的代码.如果我使用第一种方法,是否有一种快速方法可以检查是否选中了特定的复选框?目前我可以想到的未经测试的解决方案包括执行if(in_array(‘lang_en’,$_POST [‘lang’]))以检查它是否存在于$_POST中.
问题3主要问题是:我正在使用第二种方法,因此我可以轻松检查PHP中是否选中了复选框.现在我想添加一个文本链接,单击该链接将选中所有复选框.我的Javascript不太好,所以我使用的是http://www.shiningstar.net/articles/articles/javascript/checkboxes.asp的脚本,但是示例脚本使用一个数组作为复选框的名称,而我的PHP代码无法检查选中的复选框是否用于复选框的名称.如何修改javascript代码以便在没有数组的情况下工作?
希望我能弄清楚这个烦人的问题!谢谢!
编辑
使用Javascript:
<!-- Begin function checkAll(field) { for (i = 0; i < field.length; i++) field[i].checked = true ; } function uncheckAll(field) { for (i = 0; i < field.length; i++) field[i].checked = false ; } // End --> </script>
HTML:
<form action="http://localhost/website/places/search" method="post" accept-charset="utf-8" name="subcategory"> <ul> <li><input type="checkBox" name="cuisine_American" value="American" /> American</li> <li><input type="checkBox" name="cuisine_Chinese" value="Chinese" onClick="checkAll(document.subcategory.cuisine)" /> Chinese</li> <li><input type="checkBox" name="cuisine_Indian" value="Indian" onClick="checkAll(document.subcategory.cuisine)" /> Indian</li> <li><input type="checkBox" name="cuisine_Japanese" value="Japanese" onClick="checkAll(document.subcategory.cuisine)" /> Japanese</li> <li><input type="checkBox" name="cuisine_Korean" value="Korean" onClick="checkAll(document.subcategory.cuisine)" /> Korean</li> <li><input type="checkBox" name="cuisine_Mexican" value="Mexican" onClick="checkAll(document.subcategory.cuisine)" /> Mexican</li> <li><input type="checkBox" name="cuisine_Middle Eastern" value="Middle Eastern" onClick="checkAll(document.subcategory.cuisine)" /> Middle Eastern</li> <li><input type="checkBox" name="cuisine_Pakistani" value="Pakistani" onClick="checkAll(document.subcategory.cuisine)" /> Pakistani</li> <li><input type="checkBox" name="cuisine_Italian" value="Italian" onClick="checkAll(document.subcategory.cuisine)" /> Italian</li> </ul> </form>
回答:
>要么工作……取决于你是想要显式名称还是数组
>您也可以使用array_key_exists()
>您可以将您使用的javascript代码发布到您的问题中吗?我会再看看……
更新:
这是一个用于实现onclick处理程序的jQuery解决方案:
function checkAll(field){ $(':checkBox[name^="cuisine_"]').each(function(index){ this.checked=true; }); } function uncheckAll(field){ $(':checkBox[name^="cuisine_"]').each(function(index){ this.checked=false; }); }
请注意,您确实不需要传入字段,除非您想要概括它并传入字符串以获取startswith模式(例如cuisine_).