0

我有一个脚本,它生成一个包含许多行和列的表。在每一行的每一端,是一个提交按钮,其名称是运行脚本时生成的数组之一,类似于:delete_CN[0]、delete_CN[1] 等。

在处理表单 POST 时,我需要确定单击了哪个提交按钮。目前,当我看到 print_r 或 dump_vars 时,我看到以下内容:["delete_CN"]=> array(1) { [0]=> string(6) "Delete" },它没有给出被按下按钮的数组索引。

我应该如何最好地做到这一点?我需要找到被按下的提交按钮的数组索引,或者另一种唯一标识提交按钮行的方法来处理数据。原始表格是通过读取zonefile动态生成的,同一行的元素都是数组。

4

4 回答 4

1

发布数据将始终包含所有按钮,但只有被点击的按钮才会有值。这样,您可以通过检查按钮数组中的哪个值不为空来轻松确定单击了哪个按钮。(该值将是按钮上的文本,因为该文本在 value 属性中定义)。

于 2013-07-19T09:13:25.480 回答
0

在 HTML/PHP 中,您可以使表格中的每一行成为一个单独的表格,并添加一个

<input type="hidden" name="which_clicked" value="delete_CN[0]">

然后寻找 $_POST['which_clicked']

或者您可以使用 jQuery 并根据单击的提交按钮插入哪个值。

于 2013-07-19T09:13:15.833 回答
0

请注意,也可以使用 ENTER 键提交表单。如果发生这种情况,浏览器会像单击表单中的第一个按钮一样处理它。

显然,当焦点位于提交按钮上时按 ENTER 会使用当前焦点按钮发送表单。

于 2013-07-19T09:16:25.153 回答
0

我所做的,我创建了一个隐藏的输入类型数组,具有“唯一值”,以及我们分配给每个按钮的那些值。例如输入 type = "hidden" name = "txtID[]" id = "txtID[]" value = "15618" 并且对于按钮输入 type="submit" name="CityAdd15618" id="CityAdd15618" value=" +"

然后提交时,你只需要循环

$lTtl=count($_POST['txtID']);
for($lCtr1=0; $lCtr1<$lTtl; $lCtr1++)
{
    if (isset($_POST['CityAdd' . $_POST['txtID'][$lCtr1]]))
        break;
}
echo "ttl:" . $lCtr1 . "<br>\n";
于 2013-12-13T01:58:16.620 回答