确定使用了哪个提交按钮?

Posted

技术标签:

【中文标题】确定使用了哪个提交按钮?【英文标题】:Determining which submit button was used? 【发布时间】:2010-10-02 17:27:06 【问题描述】:

是否可以我有一个带有 2 个提交按钮的确认表。第一个将确认订单,执行一些数据库任务,然后重定向。第二个是取消按钮,只会重定向到同一页面,而不执行任何数据库任务。

是否可以在 servlet 中(最好通过请求对象)我不想依赖 javascript,因为这很简单,但如果唯一的可能,我会求助于它。

谢谢。

【问题讨论】:

【参考方案1】:
<button name="someName" value="someValue" type="submit">Submit</button>
<button name="otherName" value="otherValue" type="submit">Cancel</button>

您的请求数据中将包含 someName=someValueotherName=otherValue

【讨论】:

谢谢。有点想是这样,但只是想我会提前问。 如果您已经认为会是这样,我不知道您为什么不设置、运行它并测试结果?好像问一个你可能已经知道答案的问题是在浪费大家的时间。 我不认为希望有一种更清洁的做事方式是一种浪费。【参考方案2】:

当然,只要给你的每个submit按钮一个name属性,无论哪个被点击都会出现在提交的变量中:

<input type="submit" name="doConfirm" value="Confirm"  />
<input type="submit" name="doCancel"  value="Cancel"  />

【讨论】:

【参考方案3】:

正如其他人所提到的,拥有两个不同名称的按钮将实现您的目标。但是,在您的应用程序中依赖它时,需要注意一些潜在的问题。我认为它们是特定于 Internet Explorer 的,因此如果您不需要支持旧版本的 IE,您可以忽略。两者都涉及当表单元素之一具有焦点时用户按 Enter 键时提交的表单的行为。 This article 使用 ASP 来演示问题,但 html 方面是相关的。

【讨论】:

【参考方案4】:

当使用多个提交按钮时,我喜欢使用 javascript 来设置隐藏表单字段的值,该字段描述应该发生的操作。

例如:

<input type="hidden" name="action" id="form-action" />
<input type="submit" value="Save" onClick="document.getElementById('form-action').value='save'" />
<input type="submit" value="Copy" onClick="document.getElementById('form-action').value='copy'" />

【讨论】:

以上是关于确定使用了哪个提交按钮?的主要内容,如果未能解决你的问题,请参考以下文章

确定使用了哪个提交按钮?

CakePHP 2.0 确定点击了哪个提交按钮

如何确定 jQuery 表单插件中的活动提交按钮?

如何使用两个提交按钮,并区分使用哪个提交表单? [复制]

jQuery:如何获取表单提交时点击了哪个按钮?

HTML 表单上的默认提交按钮是如何确定的?