HTML表单中的多个提交按钮
假设我们以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定位它们,使其以我们想要的方式显示