2012-01-04 69 views
23

我有一个这样的形式:提交表单到另一个页面(这是在行动中使用的页面不同)

的index.php

<form method="post" action="send.php"> 
    <textarea name="msg" id="msg"></textarea> 
    <input type="submit" value="Send" /> 
</form> 

所以,如果我进入textarea的东西,并点击在“发送”时,它被提交到“send.php”页面。但我想包含另一个按钮来预览它。也就是说,当点击这个按钮时,上面的表单被提交到“preview.php”,它将在一个新的空白窗口/标签页中打开(原始页面即index.php将保持原样)。这是显示用户将要发送的消息的预览。

我不知道该怎么做。

回答

27

使用JavaScript来临时更改行动和目标:

<form method="post" action="send.php" id="idOfForm"> 
    <textarea name="msg" id="msg"></textarea> 
    <input type="submit" value="Send" /> 
</form> 
<button onclick="doPreview();">Preview</button> 
<script type="text/javascript"> 
    function doPreview() 
    { 
     form=document.getElementById('idOfForm'); 
     form.target='_blank'; 
     form.action='preview.php'; 
     form.submit(); 
     form.action='send.php'; 
     form.target=''; 
    } 
</script> 
+0

我不知道你可以有形式的目标空白!这很棒! – 2014-07-16 00:57:26

+0

@VppMan很高兴看到,你是如何混合它。 – Andremoniy 2015-10-19 10:56:29

0

您可以使用JavaScript更改单击按钮后提交表单的操作。

或者只需通过AJAX提交表单,然后在得到回复后重定向。

0
<form onreturn="someJavascriptFunction()" action="" method=""> 

创建能够打开这个预览页面

+0

我没有看到表单文档中的“onreturn”。 – Noumenon 2015-10-30 12:52:10

7

给您形式的ID(Form1的)一个js函数。当前形式的动作可以控制这样的:

function setPreview() { 
    $('#form1').attr('target','_blank') 
    $('#form1').attr('action','http://yourpreviewurl.php') 
    $('#form1').submit() 
} 

function setSubmit() { 
    $('#form1').attr('target','') 
    $('#form1').attr('action','http://yourposturl.php') 
    $('#form1').submit() 
} 

有两个按钮,这两个type="button",一个叫setPreview和另一个叫setSubmit

+1

谢谢。我将jQuery与Aaron J Spetner的想法混合在一起。 – 2012-01-05 08:38:39

+0

这篇文章(https://mentaljetsam.wordpress.com/2008/06/02/using-javascript-to-post-data-between-pages/)更进了一步,并提供了一个相当通用的实现。 – jpaugh 2016-10-05 19:00:43

7

现在有提交输入处理这一属性:

<input type="submit" formaction=”differentThanNormalAction.php”> 
+0

完美,谢谢! – raphael 2018-01-27 18:37:03

相关问题