使用preventDefault()时,如何在按钮单击时提交表单?

当用户单击[ENTER]键时,我正在使用jQuery的.preventDefault()来阻止表单提交。 问题是,当我单击提交按钮时,它也会停止提交表单。

我看到Stackoverflow上有许多关于.preventDefault()线程,但是它们都没有解决我的问题。

这是我目前正在处理的代码。

 // Part of my 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'); } }

任何人都可以告诉我他在代码按钮上提交表单的代码是什么?

在DOM节点上触发提交事件,而不是jQuery对象。

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

要么

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

要么

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

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

将提交按钮更改为普通按钮并处理其onClick事件中的提交。

据我所知,没有办法判断表单是由Enter键还是提交按钮提交的。

替换这个:

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

有了这个:

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

小提琴

这将阻止表单在按下Enter键时提交,因为它会阻止键的默认操作,但表单将在单击时正常提交。

你需要使用

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

好的,首先是e.preventDefault(); 它不是一个Jquery元素,它是一个javascript的方法,现在它是真的如果你添加这个方法你避免提交事件,现在你可以做到的是通过像这样的ajax发送表单

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