使用preventDefault()方法时,按钮点击我怎样才能提交表单?(How can I sub

2019-07-30 12:16发布

我使用jQuery的.preventDefault()以防止表单提交,当用户点击[设置]键。 问题是,它也停止提交表单,当我点击提交按钮。

我看到有很多线程#2中的问候.preventDefault()但它们都没有解决我的问题。

下面是我目前工作的代码。

// Part of my form
<form id="subscription_order_form" class=""  method="post" action="some_url"> 
  <button id="btn_order" type="submit">Order</button>
</form>

// Prevent the form to be submitted on ENTER
$('#subscription_order_form').submit(function(e){
  e.preventDefault();
});

// Controll data
$('#btn_order').click(function(){
  checkMandatoryFields();
});


// Check mandatory fields before subitting:
function checkMandatoryFields(e){

  // Code for testing here

  // Set "error" message and abort submission
  if(msg.length > 0) {
    // Do something
  } else {

    //submit or trigger is not recognized as functions
    $('#subscription_order_form').submit(); //.trigger('submit');

  }
}

谁能告诉我什么,他提交按钮点击是表单代码?

Answer 1:

触发的DOM节点,而不是一个jQuery对象提交事件。

$('#subscription_order_form')[0].submit();

要么

$('#subscription_order_form').get(0).submit();

要么

document.getElementById("subscription_order_form").submit();

这绕过了jQuery绑定事件使表单提交正常。



Answer 2:

更改提交按钮正常按钮和手柄在其onClick事件提交。

据我所知,目前还没有办法告诉我们,如果形式提交的Enter键或提交按钮。



Answer 3:

替换此:

$('#subscription_order_form').submit(function(e){
  e.preventDefault();
});

有了这个:

$('#subscription_order_form').on('keydown', function(e){
    if (e.which===13) e.preventDefault();
});

小提琴

这将防止从形式时,按下Enter键时,它可以防止键的默认操作提交,但形式通常会提交点击。



Answer 4:

您需要使用

$(this).parents('form').submit()


Answer 5:

确定,第一e.preventDefault(); 它不是一个jQuery的元素,它的JavaScript的方法,现在它是真的,如果你加入这个方法,你可以避免提交的事件是,现在你可以做什么是Ajax这样的发送形式

$('#subscription_order_form').submit(function(e){
    $.ajax({
     url: $(this).attr('action'),
     data : $(this).serialize(),
     success : function (data){

      }
   });
    e.preventDefault();
});


文章来源: How can I submit form on button click when using preventDefault()?