jQuery - 为什么$('形式')。get(0).submit()不会触发附加的提交处理程序?

时间:2014-10-11 17:42:53

标签: jquery forms

假设我为表单创建了以下处理程序(回调):

$('form').submit(function (event) {
   event.preventDefault();
   alert('form submitted');
});

为什么调用$('form').get(0).submit不调用提交处理程序?表格直接提交。

1 个答案:

答案 0 :(得分:1)

.get(0)返回本机js DOM元素(与$('form')[0]相同),然后你触发了 直接提交活动。

如果您尝试使用.eq(0)获取第一个Element并使用.submit()触发提交jQuery样式。

<强>摘要

  • $('selector')[0]〜返回本机js DOM元素
  • .get(0)〜与[0]相同。
  • .eq(0)〜将第一个元素作为jQuery对象返回。

更多

  • 附加提交事件(jQuery):$('form.selector').submit(function (e) { });
  • 触发提交(jQuery):$('form.selector').submit();$('form.selector').trigger('submit');
  • 在第一个元素上触发提交:$('form').eq(0).submit();

演示jsFiddle

我希望你需要它。

演示jQuery

$('form').submit(function (event) {
    event.preventDefault(); // Will prevent the native handler from firing.
    alert('form submitted :' + $(this).attr("id"));
});

//change the `.eq(index)` to 1 to trigger the submit on the second form:  
$('form').eq(0).submit(); // Same as: $('form').eq(0).trigger("submit");

演示HTML

<form id="form1"></form>
<form id="form2"></form>