【问题标题】:addEventListener submit and jQuery submitaddEventListener 提交和 jQuery 提交
【发布时间】:2012-08-21 10:36:49
【问题描述】:

我有表格:

<form id="form1" class="f_class">
<input type="button" class="jq-button" value="jq-button"/>
</form>

还有js代码:

var f=document.getElementById("form1");
f.addEventListener("submit", function(){alert("addEventListener_submit");},false);
$(".jq-button").click(function(){$("#form1").submit();});

(Jsbin)

当我点击 jq 按钮时,警报不显示。 为什么?

更新

我有外部 js 代码,它使用addEventListener,我无法更改它。但在我的代码中,我想使用 jQuery 提交。我可以合并它们吗?

【问题讨论】:

    标签: javascript jquery addeventlistener jquery-events


    【解决方案1】:

    只需将其更正为:

    <input type="submit" class="jq-button" value="jq-button"/>

    【讨论】:

      【解决方案2】:

      $().submit() 触发 jquery 提交事件而不是 eventlisterner。我会用 jQuery 编写所有事件的绑定,例如:

      var f = $("#form1");
      f.on("submit", function() { // on requires jquery 1.7+
          alert("submit");
      });
      $(".jq-button").on("click", (function(e) {
          $(this).closest("form").trigger("submit");
          e.preventDefault();
      });
      

      编辑:

      可以执行以下操作:

      var f=document.getElementById("form1");
      
      f.addEventListener("submit", function(){
          alert("addEventListener_submit");
      },false);
      
      $(".jq-button").click(function(){
          var c = $(this),
              cc = c.clone().attr("type","submit");
          c.replaceWith(cc);
          cc.click();
      });
      

      如果您无法更改 HTML 标记。

      【讨论】:

      • 请问jquery提交事件是否与纯DOM事件不同?
      • 当您尝试在 jquery 中触发事件时,您将其引用到其 jquery 事件绑定(查看github.com/jquery/jquery/blob/master/src/event.js,了解他们如何使用“add”方法进行绑定
      • 我有外部 js 代码,它使用 addEventListener,我无法更改它。但在我的代码中,我想使用 jquery。我可以合并它们吗?
      • @DeeRain 最简单的方法是更改​​ Ch4rAss 所做的 HTML 标记。
      猜你喜欢
      • 2018-10-12
      • 2011-06-22
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多