确定在使用按钮数组时单击了哪个“提交”按钮

时间:2013-07-19 09:07:40

标签: php forms submit

我有一个脚本,它生成一个包含许多行和颜色的表。在行的每一端,都是一个Submit按钮,其名称是运行脚本时生成的数组之一,如:delete_CN [0],delete_CN [1]等。

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

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在HTML / PHP中,您可以使表格中的每一行都是单独的形式,然后添加

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

然后寻找$ _POST ['which_clicked']

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

答案 2 :(得分:0)

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

显然,当焦点在提交按钮上时按ENTER键会使用当前关注的按钮发送表单。

答案 3 :(得分:0)

我做了什么,我创建了一个隐藏的输入类型数组,具有“唯一值”,以及我们分配给每个按钮的值。例如input type =“hidden”name =“txtID []”id =“txtID []”value =“15618”,按钮输入类型=“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";