首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在没有jQuery的情况下确定按下了哪个提交按钮,窗体onSubmit事件

如何在没有jQuery的情况下确定按下了哪个提交按钮,窗体onSubmit事件
EN

Stack Overflow用户
提问于 2010-08-27 00:55:42
回答 8查看 154.4K关注 0票数 105

我有一个带有两个提交按钮和一些代码的表单:

HTML:

代码语言:javascript
运行
复制
<input type="submit" name="save" value="Save" />
<input type="submit" name="saveAndAdd" value="Save and add another" />

JavaScript:

代码语言:javascript
运行
复制
form.onSubmit = function(evnt) {
    // Do some asyncrhnous stuff, that will later on submit the form
    return false;
}

当然,这两个提交按钮完成不同的任务。有没有办法在onSubmit中找出哪个按钮被按下了,这样以后我就可以通过执行thatButton.click()来提交

理想情况下,我不希望修改按钮的代码,只是有一个纯粹的JavaScript插件,具有这种行为。

我知道火狐有evnt.explicitOriginalTarget,但我找不到适用于其他浏览器的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-08-27 01:13:33

不是在提交事件处理程序本身,不是。

但您可以做的是向每个提交添加单击处理程序,这将通知提交处理程序单击了哪个提交处理程序。

下面是一个完整的示例(为简洁起见,使用jQuery )

代码语言:javascript
运行
复制
<html>
<head>
  <title>Test Page</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript">

  jQuery(function($) {
      var submitActor = null;
      var $form = $('#test');
      var $submitActors = $form.find('input[type=submit]');

      $form.submit(function(event) {
          if (null === submitActor) {
              // If no actor is explicitly clicked, the browser will
              // automatically choose the first in source-order
              // so we do the same here
              submitActor = $submitActors[0];
          }

          console.log(submitActor.name);
          // alert(submitActor.name);

          return false;
      });

      $submitActors.click(function(event) {
          submitActor = this;
      });
  });

  </script>
</head>

<body>

  <form id="test">

    <input type="text" />

    <input type="submit" name="save" value="Save" />
    <input type="submit" name="saveAndAdd" value="Save and add another" />

  </form>

</body>
</html>
票数 45
EN

Stack Overflow用户

发布于 2011-06-23 18:06:09

代码语言:javascript
运行
复制
<form onsubmit="alert(this.submitted); return false;">
    <input onclick="this.form.submitted=this.value;" type="submit" value="Yes" />
    <input onclick="this.form.submitted=this.value;" type="submit" value="No" />
</form>

jsfiddle用于相同的功能

票数 64
EN

Stack Overflow用户

发布于 2012-04-08 20:52:47

基本框架,但已确认工作正常,例如:

代码语言:javascript
运行
复制
<script type="text/javascript">
var clicked;
function mysubmit() {
    alert(clicked);
}
</script>
<form action="" onsubmit="mysubmit();return false">
    <input type="submit" onclick="clicked='Save'" value="Save" />
    <input type="submit" onclick="clicked='Add'" value="Add" />
</form>
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3577469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档