HTML表单中的多个提交按钮

时间:2020-03-05 18:37:14  来源:igfitidea点击:

假设我们以HTML形式创建了一个向导。一键向后退,一键向前。由于当我们按Enter键时,后退按钮首先出现在标记中,因此它将使用该按钮提交表单。

例子:

<form>
  <!-- put your cursor in this field and press Enter -->
  <input type="text" name="field1" />

  <!-- This is the button that will submit -->
  <input type="submit" name="prev" value="Previous Page" />

  <!-- But this is the button that I WANT to submit -->
  <input type="submit" name="next" value="Next Page" />
</form>

我想做的是确定当用户按下Enter键时使用哪个按钮提交表单。这样,当我们按Enter键时,向导将移至下一页,而不是上一页。我们必须使用tabindex来做到这一点吗?

解决方案:

为提交按钮命名,如下所示:

<input type="submit" name="submitButton" value="Previous Page" />
<input type="submit" name="submitButton" value="Next Page" />

当用户按下Enter键并将请求发送到服务器时,我们可以在服务器端代码中检查" submitButton"的值,该代码包含"名称/值"对形式的集合。例如,在经典ASP中:

If Request.Form("submitButton") = "Previous Page" Then
    ' Code for Previous Page
ElseIf Request.Form("submitButton") = "Next Page" Then
    ' Code for Next Page
End If

参考:在单个表单上使用多个提交按钮

我们是否可以将以前的按钮类型更改为如下所示的按钮:

<input type="button" name="prev" value="Previous Page" />

现在,"下一步"按钮将成为默认按钮,此外,我们还可以向其中添加"默认"属性,以便浏览器将其突出显示,如下所示:

<input type="submit" name="next" value="Next Page" default />

希望能有所帮助。

如果默认情况下使用第一个按钮的事实在浏览器之间是一致的,为什么不在源代码中正确地放置它们,然后使用CSS切换它们的明显位置?例如,左右浮动它们可以在视觉上切换它们。

我将使用Javascript提交表单。该函数将由form元素的OnKeyPress事件触发,并将检测是否选择了Enter键。如果是这种情况,它将提交表格。

以下是两个页面,提供有关如何执行此操作的技术:1、2. 基于这些,这里是用法示例(基于此处):

<SCRIPT TYPE="text/javascript"><!--
function submitenter(myfield,e) {
  var keycode;
  if (window.event) {
    keycode = window.event.keyCode;
  } else if (e) { 
    keycode = e.which;
  } else {
    return true;
  }

  if (keycode == 13) {
    myfield.form.submit();
    return false;
  } else {
    return true;
  }
}
//--></SCRIPT>

<INPUT NAME="MyText" TYPE="Text" onKeyPress="return submitenter(this,event)" />

使用我们给出的示例:

<form>
<input type="text" name="field1" /><!-- put your cursor in this field and press Enter -->
<input type="submit" name="prev" value="Previous Page" /> <!-- This is the button that will submit -->
<input type="submit" name="next" value="Next Page" /> <!-- But this is the button that I WANT to submit -->
</form>

如果单击"上一页",则只会提交"上一页"的值。如果单击"下一页",则仅会提交"下一个"的值。

但是,如果我们在表单的某处按Enter,则" prev"和" next"都不会提交。

因此,使用伪代码可以执行以下操作:

If "prev" submitted then
    Previous Page was click
Else If "next" submitted then
    Next Page was click
Else
    No button was click

如果我们真的只是希望它像安装对话框一样工作,那么只需将焦点放在"下一步"按钮OnLoad上即可。这样,如果用户单击"返回",则表单将提交并继续前进。如果要返回,可以点击Tab或者单击按钮。

凯文(Kevin),这不能用纯HTML来完成。我们必须依靠JavaScript才能实现此技巧。

但是,如果在HTML页面上放置两个表单,则可以执行此操作。

Form1将具有上一个按钮。

Form2将具有任何用户输入+下一个按钮。

当用户在Form2中按Enter键时,将触发"下一步提交"按钮。

我希望这有帮助。我只是在"浮动"右边的按钮而已。

这样,"上一个"按钮位于"下一个"按钮的左侧,但是"下一个"在HTML代码中排在第一位:

.f {
  float: right;
}
.clr {
  clear: both;
}
<form action="action" method="get">
  <input type="text" name="abc">
  <div id="buttons">
    <input type="submit" class="f" name="next" value="Next">
    <input type="submit" class="f" name="prev" value="Prev">
    <div class="clr"></div><!-- This div prevents later elements from floating with the buttons. Keeps them 'inside' div#buttons -->
  </div>
</form>

编辑:优于其他建议:没有JavaScript,可访问,两个按钮均保持为" type =" submit"`

凯文

在大多数浏览器中,这种方法无需使用javascript或者CSS即可:

<form>
<p><input type="text" name="field1" /></p>
<p><a href="previous.html">
<button type="button">Previous Page</button></a>
<button type="submit">Next Page</button></p>
</form>

Firefox,Opera,Safari,Google Chrome都可以使用。
与往常一样,IE是问题所在。

启用javascript时,此版本适用:

<form>
<p><input type="text" name="field1" /></p>
<p><a href="previous.html">
<button type="button" onclick="window.location='previous.html'">Previous Page</button></a>
<button type="submit">Next Page</button></p>
</form>

因此,此## 解决方案的缺陷是:
如果我们将IE与Javascript一起使用,则上一页不起作用。
请注意,后退按钮仍然有效!

它可以与CSS一起使用

首先将它们放入标记中,作为下一个按钮,然后将其放置在标记中。

然后使用CSS定位它们,使其以我们想要的方式显示