微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>
回答:

>要么工作……取决于你是想要显式名称还是数组
>您也可以使用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_).

原文地址:https://www.jb51.cc/php/137918.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐