php – HTML表单中的复选框数组
我有一个关于复选框的问题.
<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>
回答:
>要么工作……取决于你是想要显式名称还是数组 更新: 这是一个用于实现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_). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |