表单中动态提交按钮的数量

时间:2015-02-27 13:48:18

标签: php

我有一个包含多个提交按钮的表单。我正在捕获点击了什么按钮,给它们不同的名称,并检查处理表单的phpcode中的按钮名称。现在我想让这些按钮动态化,并正在寻找解决方案如何处理这个。

假设我有一个看起来像这样的数组。

Array
(
    [0] => Array
        (
            [ID] => 1
            [Name] => Button 1
        )

    [1] => Array
        (
            [ID] => 2
            [Name] => Button 2
        )

)

现在我自然地循环遍历这个数组:

foreach($buttons as $button) 
    echo "<input type='submit' name='".$button['ID']."' value='".$button['Name']."'>";

在页面顶部,我通过

“捕获”点击
if(isset($_POST['nameofthebutton'])) {

这是我的问题所在。如果我想使用动态数量的按钮。我如何在这里捕捉它们?他们都将做同样的事情,除了一个值将是不同的,假设按下按钮的buttonid。我该如何捕捉到这个?我不知道前面需要多少按钮所以我不能在每个按钮上写一个if语句。有人有任何想法吗?

4 个答案:

答案 0 :(得分:1)

您可以遍历用于打印此表单的相同数组,检查单击了哪一个:

foreach($buttons as $button){
    if(isset($_POST[$button['ID']])){
        //action here...
    }
}

答案 1 :(得分:1)

echo '<input type="button" name="btn['.$button['ID'].']" value="'.$button['Name'].'" />';

然后获取你的价值

$buttons = $_POST['btn'];
foreach ($buttons as $id => $button) {
//
}

答案 2 :(得分:1)

正如您现在所做的那样,拥有一个包含按钮名称的数组:

$buttons = [['ID' => 1, 'Name' => 'some_name'], ...];
foreach($buttons as $button) {
    echo '<input type="submit" name="'.$button['Name'].'" value="'.$button['ID'].'" />';
}

然后当您收到POST请求时,迭代按钮名称并检查它们是否在$ _POST中定义:

foreach ($buttons as $button) {
    if (isset($_POST[ $button['Name'] ])) {
         // This submit button is in $_POST
    }
}

答案 3 :(得分:1)

使用id='btnInfo'创建一个隐藏的输入元素。现在将其添加到您的按钮元素:onClick="getBtnInfo(".$btn['ID'].")"。 创建一个javascript函数,如下所示:

function getBtnInfo(var i) { var btn=Document.getElementById('btnInfo'); btn.value=i; }

在你的php脚本中使用$_POST['btnInfo']获取按下按钮的ID。