我有一个带有文本区域和2个按钮的表单,我需要其中一个提交到同一页面上,另一个提交到另一个php文件。两个按钮都需要允许通过post引用文本区域。我怎么能这样做。
例如:
<form action="" method="post"> <textarea></textarea> <input type='submit' value='Preview'> //I want this to submit to the same page <input type='submit' value='Save'> // I want this to submit to save.php </form>
注意:我的所有html都是由php通过不同的脚本生成的,这些脚本会根据用户之前的操作而改变。
答案 0 :(得分:8)
<?php
if (isset($_POST['action1']) || isset($_POST['action2'])) {
// handle textarea
if (isset($_POST['action1'])) {
header('Location: /action1.php');
exit();
}
header('Location: /action2.php');
exit();
}
?>
<form>
<fieldset>
<textarea name="text"></textarea>
<input type="submit" name="action1" value="Action1">
<input type="submit" name="action2" value="Action2">
</fieldset>
</form>
当用户按下回车键提交表单时,您只需要小心谨慎。即什么提交将被触发。
答案 1 :(得分:3)
为每个提交按钮命名(例如button1和button2)。 将表单提交到单个php脚本。 在这个PHP脚本上,检查$ _POST变量以查看单击了哪个按钮。 然后采取相应行动,处理您的表单值并重定向到您想要的任何页面。
要检查点击了哪个按钮,请执行以下操作:
if ($_POST["button1"]) {
// do stuff
} elseif ($_POST["button2"]) {
// do other stuff
}
答案 2 :(得分:2)
如果您使用CodeIgniter
,则有更好的方法可以执行此操作。 (CodeIgniter
的另一篇帖子指出这是重复的,所以我想为CI
添加更好的解决方案。)
在我的情况下,我有一个购物车表格(例如)。在那个表格上我可能有按钮:结账,更新购物车和清除。
<强>形式:强>
以下是购物车表单屏幕上的表单按钮:
<input type="submit" value="Update">
<input type="submit" value="Clear">
<input type="submit" value="Checkout">
<强>控制器:强>
表单操作指向带有方法保存controller
的{{1}}。 "cart/save/"
只是确定点击了哪个按钮并转发到相应的购物车功能来处理表单提交。
<强>购物/保存()强>
Save
在控制器(public function save() {
$submit_button = $this->input->post('submit_button');
if ($submit_button == 'Update')
$this->update();
else if ($submit_button == 'Checkout')
$this->checkout();
else if ($submit_button == 'Clear')
$this->clear();
}
)内,我只需拥有cart
方法调用的update()
,clear()
和checkout()
个函数。无需通过CI的重定向()或php标头重定向等重定向。
我希望能帮到某人
答案 3 :(得分:1)
你可以从服务器端(我之前的回答)做到这一点,你可以从客户端做我的回答:(你甚至可以做到这两点):
<form action="" id="frm" method="post">
<textarea></textarea>
<input type='button' onclick="submitMe(this)" value='Preview'>
<input type='button' onclick="submitMe(this)" value='Save'>
</form>
<script>
function submitMe(obj){
if(obj.value == "Preview"){
document.getElementById('frm').action = 'preview.html'
}else{
document.getElementById('frm').action = 'save.html'
}
document.getElementById('frm').submit();
}
</script>
答案 4 :(得分:-1)
通过重定向在服务器端执行此操作。