【发布时间】:2011-09-18 17:33:55
【问题描述】:
我有一个关于复选框的问题。
<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>
【问题讨论】:
-
附加选项 -
<input type='checkbox' name='lang[en]'/>。这就是我在需要动态复选框列表时使用的方法。当列表是静态的(即硬编码)时,我使用name='lang_en'选项。而且我从不将value属性与复选框一起使用。 -
哇,太酷了,我得试试这个,谢谢!
标签: php javascript mysql html codeigniter