我正在尝试使用多个提交按钮提交单个表单。表单使用Javascript提交。我使用下面的api创建一个带有复选框的表格列表。
我的用于创建列表的控制器文件是
$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中执行此操作。
答案 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
});
答案 3 :(得分:0)
你可以创建一个输入隐藏元素,并在复选框检查/取消选中操作,你可以使用Javascript为该隐藏元素赋值并检查服务器端(php)上相应的隐藏元素值以区分。