快速提问。
我有一个包含动态复选框和配对文本框的表单。当我提交表单并print_r输出$ _POST信息时,这就是我得到的。
Array
(
[chkname_156] => chkname_156
[txtID_156] =>
[chkname_157] => chkname_157
[txtID_157] =>
[doChooseAppSvc] => doChooseAppSvc
)
如上所示,已选中复选框,但txtID为空。我想要实现的是这个。如果存在复选框,这意味着它们已被检查,但文本框为空,我需要提醒用户。由于每个都是动态的,下划线后的数字会发生变化,但名称的开头保持不变。
我认为,通过执行以下操作,我已经找到了解决方案的一半。我正在使用preg_grep创建一个已经选中的复选框数组。这是代码。
$pm = preg_grep("/^chkname.*/", $p);
现在,我被困住了。任何帮助将不胜感激。
答案 0 :(得分:0)
我建议您在表单中使用数组 它可以更容易地比较值。
例如:
<input type="checkbox" name="chkname[<?=$id?>]" value="" />
<input type="text" name="txtID[<?=$id?>]" value="" />
然后,对于每次迭代,您可以检查:
if (isset($posted['chkname'][$id]) && $posted['txtID'][$id]=='') {
// alert the user
}
以下是检查输入的循环示例:
// loop through all text inputs
foreach ($posted['txtID'] as $id => $txtID_value) {
// for each text input, validate against checkbox with the same $id
if (isset($posted['chkname'][$id]) && $txtID_value!='') {
// output an error message
echo "<p>You checked box #$id but didn't fill in text input #$id.</p>";
}
}