使用PHP和Javascript的多个提交按钮

时间:2014-08-05 13:21:49

标签: javascript php jquery html forms

我正在尝试使用多个提交按钮提交单个表单。表单使用Javascript提交。我使用下面的api创建一个带有复选框的表格列表。

http://download1.parallels.com/Plesk/PP11/11.5/Doc/en-US/online/plesk-extensions-reference/classes/pm_View_List_Simple.html

我的用于创建列表的控制器文件是

$data[] = array(
                'column-1' => '<form action="index.php/index/sign" method="post" id="form1">
                                <input type="checkbox" name="vehicle[]" value="Bike">I have a bike<br>
                                <input type="checkbox" name="vehicle[]" value="Car">I have a car<br>',
                'column-2' => '<img src="' . $iconPath . '" /> image #',
            );

$list = new pm_View_List_Simple($this->view, $this->_request);
        $list->setData($data);
        $list->setColumns(array(
            'column-1' => array(
                'title' => 'select',
                'noEscape' => true,
                'searchable' => true,
            ),
            'column-2' => array(
                'title' => 'Description',
                'noEscape' => true,
                'sortable' => false,
            ),
        ));

$tools = array (
         array (
             'title' => 'Add',
             'class' => 'sb-activate',
             'link' =>  'javascript: submitform()',
         ),
         array (
             'title' => 'Delete',
             'class' => 'sb-activate',
             'link' =>  'javascript: submitform1()',
         ),
     );

在上面的例子中,您可以看到有多个提交按钮分别进行添加和删除。提交后都将转到操作标志意味着视图文件将是sign.phtml。主索引视图文件列表粘贴在下面。

<script type="text/javascript">
function submitform()
{
 document.forms["form1"].submit();
alert document.getElementById();
}

function submitform1()
{
        document.forms["form1"].submit();
}
</script>

<?php echo $this->renderList($this->list); ?>

我的问题是表单提交重定向到只有复选框值的同一个操作符号。但我需要为不同的表单提交做不同的事情。所以我需要在sign动作中区分add和delete。我是否能够将任何参数从javascript函数发送到PHP签名函数,以便我可以区分PHP端的按钮。

请不要建议使用不同名称的普通html提交按钮,因为我无法在此api中执行此操作。

4 个答案:

答案 0 :(得分:1)

$data[] = array('column-1' => '<form action="index.php/index/sign" method="post" id="form1">
<input type="checkbox" name="vehicle[]" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle[]" value="Car">I have a car<br>

<--Start: Add this line to -->
<input type="hidden" name="actionVal" id="actionVal" value="">
<--End: Add this line to -->',
'column-2' => '<img src="' . $iconPath . '" /> image #',
);


<script type="text/javascript">
function submitform(){
   <--Start: Add this line to -->
    document.getElementById('actionVal').value = 'add';
    <--End: Add this line to -->
    document.forms["form1"].submit();
}
function submitform1()
{
    <--Start: Add this line to -->
    document.getElementById('actionVal').value = 'delete'
     <--End: Add this line to -->
    document.forms["form1"].submit();
}
</script>


//PHP 

if($_POST['actionVal']=='add') {
// add
} else if($_POST['actionVal']=='delete') {
// delete
}

答案 1 :(得分:0)

可以动态创建具有唯一值的隐藏元素。试试吧。

答案 2 :(得分:0)

每个表单可以有多个提交按钮,只需检查帖子数据中的值即可。

<强> HTML:

<input type="submit" name="add" value="Add">
<input type="submit" name="delete" value="Delete">

<强> PHP:

if($_POST['add']) {
    // add
} else if($_POST['delete']) {
    // delete
}

-

编辑:我太快读了你的问题。这是JavaScript中可能适合您的解决方案。

<强> HTML

<form name="form1">
    <input id="formAdd" type="button" value="Add">
    <input id="formDelete" type="button" value="Delete">
</form>

<强>的JavaScript

document.getElementById("formAdd").addEventListener('click', function() { 
    // do stuff for add
    // submit form
});

document.getElementById("formDelete").addEventListener('click', function() {
    // do stuff for delete
    // submit form
}); 

演示:http://jsfiddle.net/MK7u9/

答案 3 :(得分:0)

你可以创建一个输入隐藏元素,并在复选框检查/取消选中操作,你可以使用Javascript为该隐藏元素赋值并检查服务器端(php)上相应的隐藏元素值以区分。