我有以下名称的复选框:
chk-cloud -a
chk-cloud-b
等等...
chk-dco-a
chk-dco-b
等等...
如何在表单提交后进行验证,以便: 必须勾选来自名称以 chk-cloud 或 chk-dco 开头的复选框中的至少一个元素?
我希望有人能帮助我。
干杯!
答案 0 :(得分:1)
如果他们是复选框,那么您真正关心的是他们是否有价值。这个价值是多么重要。
您需要做的就是检查$ _GET或$ _POST中的元素(取决于表单提交方法)是否包含该名称的字段。
if (array_key_exists ('chk-cloud-a ', $_POST)) {
// Do what should happen of that checkbox is checked
}
如果问题是您有多个类似的复选框,那么您可能需要考虑将它们组合在一个数组中。这是通过在字段名称中使用方括号表示法来完成的:
<input type="checkbox" value="1" name="chk-cloud[a]" />
<input type="checkbox" value="1" name="chk-cloud[b]" />
<input type="checkbox" value="1" name="chk-cloud[c]" />
<input type="checkbox" value="1" name="chk-cloud[d]" />
您可以使用循环来处理这样的组
foreach ($_POST [chk-cloud] as $key => $value) { // We're really only interested in the key
handleCheckbox ($key) // handleCheckbox is some function you've wrote
}
或者
foreach (array_keys ($_POST [chk-cloud]) as $key) { // Logically the same as above
答案 1 :(得分:0)
只需使用preg_match或strpos检查POST中的任何键是否符合您的要求。我个人会制作这些元素的子数组,并检查它是否为空。
答案 2 :(得分:0)
尝试这样:
function checkBoxValidate(){ //method to test checkbox
$array = array('a','b','c','d', ....); // make array for each checkbox name
foreach ($array as $a){
if((isset($_REQUEST['chk-cloud-'.$a]) || isset($_REQUEST['hk-dco-'.$a])) && ($_REQUEST['chk-cloud-'.$a] == 'check_value' || $_REQUEST['hk-dco-'.$a] == 'check_value' ) ){
return true;
}
}
return false; //return no check box was checked
}