我有一个 HTML <form>。
表单只有一个action=""
属性。
但是我希望有两个不同的target=""
属性,具体取决于您单击哪个按钮来提交表单。这可能是一些花哨的 JavaScript 代码,但我不知道从哪里开始。
我如何创建两个按钮,每个按钮都提交相同的表单,但每个按钮都为表单提供了不同的目标?
我有一个 HTML <form>。
表单只有一个action=""
属性。
但是我希望有两个不同的target=""
属性,具体取决于您单击哪个按钮来提交表单。这可能是一些花哨的 JavaScript 代码,但我不知道从哪里开始。
我如何创建两个按钮,每个按钮都提交相同的表单,但每个按钮都为表单提供了不同的目标?
我在服务器端执行此操作。也就是说,表单总是提交到同一个目标,但我有一个服务器端脚本,负责根据按下的按钮重定向到适当的位置。
如果您有多个按钮,例如
<form action="mypage" method="get">
<input type="submit" name="retry" value="Retry" />
<input type="submit" name="abort" value="Abort" />
</form>
注意:我使用了 GET,但它也适用于 POST
然后,您可以轻松确定按下了哪个按钮 - 如果变量retry
存在并具有值,则按下重试,如果变量abort
存在且具有值,则按下中止。然后可以使用此知识重定向到适当的位置。
此方法不需要 Javascript。
注意:某些浏览器无需按任何按钮(按回车键)即可提交表单。尽管这是非标准的,但您必须通过明确的
default
操作并在未按下任何按钮时激活该操作来解决这个问题。换句话说,当有人在不同的表单元素中点击输入而不是点击提交按钮时,请确保您的表单做一些合理的事情(无论是显示有用的错误消息还是假设默认值),而不是只是打破。
用这样的心态来解决这个问题更合适,即表单将具有绑定到一个提交按钮的默认操作,然后绑定到一个普通按钮的替代操作。这里的区别在于,提交下的任何一个都将是用户通过按 Enter 提交表单时使用的那个,而另一个只会在用户明确单击按钮时被触发。
无论如何,考虑到这一点,应该这样做:
<form id='myform' action='jquery.php' method='GET'>
<input type='submit' id='btn1' value='Normal Submit'>
<input type='button' id='btn2' value='New Window'>
</form>
使用这个 javascript:
var form = document.getElementById('myform');
form.onsubmit = function() {
form.target = '_self';
};
document.getElementById('btn2').onclick = function() {
form.target = '_blank';
form.submit();
}
将代码绑定到提交按钮的点击事件的方法不适用于 IE。
如果您使用的是 HTML5,则可以只使用属性formaction
. 这允许您action
为每个按钮使用不同的形式。
<!DOCTYPE html>
<html>
<body>
<form>
<input type="submit" formaction="firsttarget.php" value="Submit to first" />
<input type="submit" formaction="secondtarget.php" value="Submit to second" />
</form>
</body>
</html>
这对我有用:
<input type='submit' name='self' value='This window' onclick='this.form.target="_self";' />
<input type='submit' name='blank' value='New window' onclick='this.form.target="_blank";' />
在这个例子中,取自
http://www.webdeveloper.com/forum/showthread.php?t=75170
您可以在按钮 OnClick 事件上看到更改目标的方式。
function subm(f,newtarget)
{
document.myform.target = newtarget ;
f.submit();
}
<FORM name="myform" method="post" action="" target="" >
<INPUT type="button" name="Submit" value="Submit" onclick="subm(this.form,'_self');">
<INPUT type="button" name="Submit" value="Submit" onclick="subm(this.form,'_blank');">