表单有两个提交按钮做两个不同的事情

时间:2014-04-28 18:35:38

标签: javascript php html5 forms

我有一个表单,我有两个按钮。一个按钮应该将用户带到一个PHP脚本,另一个按钮将用户两个不同的PHP脚本。但由于某些原因,按钮不做任何事情。这是代码。

    <script language="Javascript">
function OnButton1()
{
document.contactform.action = "../scripts/email-info.php"
// document.Form1.target = "_blank";    // Open in a new window

document.contactform.submit();             // Submit the page

return true;
}

function OnButton2()
{
document.contactform.action = "../scripts/email-info2.php"
//document.contactform.target = "_blank";    // Open in a new window

document.contactform.submit();             // Submit the page

return true;
}
</script

然后是实际的表单代码:

<form id="contact-form" name="contactform" method="post">
<fieldset>
<div id="holder">
<div id="formLeft">
<div class="txtlabel">Name* </div><div class="input-bg"><input type="text" 
name="name"       id="name" required></div>
</div>
</div>
<div id="msgbox">
<div class="txtlabel">Tell Us About Your Business Needs</div>
<div class="message-bg">
<textarea name="message" id="message" rows="9" cols="56" required></textarea><input 
name="formpage" type="hidden" value="<?=$pagename;?>" />
</div></div><div style="clear:both"></div><br /><br />
<input src="/submitbtn.jpg"  
name="submit" value="View Now" class="submit-button" onclick="OnButton1();"/>
<input src="/submitbtn.jpg"  
name="submit" value="Download Now" class="submit-button2" onclick="OnButton2();" />
</fieldset>

</form>

我已删除了部分提交字段,以便更容易查看。但是当我点击任一按钮时我什么也得不到......有什么想法?

3 个答案:

答案 0 :(得分:2)

问题出在输入中:

<input src="/submitbtn.jpg"  
  name="submit" value="View Now" class="submit-button" onclick="OnButton1();"/>

当您有表格时:

document.contactform.submit

Javascript返回名为submit的输入,而不是submit函数。

您可以更改输入的名称:

<input src="/submitbtn.jpg"  
  name="yourName" value="View Now" class="submit-button" onclick="OnButton1();"/>

此外,您的输入不是按钮,请检查this

更新

question提及HTML5 formaction属性:

<form action=#">
    <buton formaction="script-1.php">submit one</button>
    <buton formaction="script-2.php">submit two</button>
</form>

答案 1 :(得分:2)

我很惊讶没有人提到过编队。它是提交/图像状态下输入和按钮标记的合法属性(在HTML5中),可用于将表单数据发送到不同的操作页面。 http://mdn.beonex.com/en/HTML/Element/input.html(它在按钮中也有效)。

<form action=#">
    <buton formaction="script-1.php">submit one</button>
    <buton formaction="script-2.php">submit two</button>
</form>

如果您需要支持IE9-,您只需使用webshims填充此内容即可。

<script src="webshims/polyfiller.js"></script>
<script>
    webshims.polyfill('forms');
</script>

<!-- now it also works with IE8/9 and other legacy browsers -->
<form action=#">
    <buton formaction="script-1.php">submit one</button>
    <buton formaction="script-2.php">submit two</button>
</form>

答案 2 :(得分:0)

您对表单的引用是

document.forms.contactform

而不是

document.contactform

因此,例如,提交按钮应为:

document.forms.contactform.submit();
//       ^^^^^

同样的修正应适用于其他参考文献。