0

快速提问。

我有一个包含配对的动态复选框和文本框的表单。当我提交表单并打印出 $_POST 信息时,这就是我得到的。

    Array
(
    [chkname_156] => chkname_156
    [txtID_156] => 
    [chkname_157] => chkname_157
    [txtID_157] => 
    [doChooseAppSvc] => doChooseAppSvc
)

正如您在上面看到的,复选框已被选中,但 txtID(s) 为空。我想要完成的是这个。如果存在复选框,这意味着它们已被选中,但文本框为空,我需要提醒用户。由于每个都是动态的,因此下划线后面的数字会发生变化,但名称的开头保持不变。

我认为,通过执行以下操作,我已经获得了解决方案的一半。我正在使用 preg_grep 创建一组已选中的复选框。这是那个代码。

$pm = preg_grep("/^chkname.*/", $p);

现在,我被困住了。任何帮助将不胜感激。

4

1 回答 1

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>";

  }

}
于 2013-10-17T00:01:26.617 回答