Javascript 将变量传递给绑定到表单提交的函数会破坏默认值并返回false
我试图执行一个绑定到表单的函数,该函数阻止浏览器提交表单,并检查表单是否缺少字段,如果没有字段,则继续通过Ajax提交表单 问题是,页面包含许多非常相似的表单,具有相同的字段,每个表单元素的ID后面只有唯一的数字。我想将该数字传递给绑定到相关表单的函数,但是当我初始化除“event”变量以外的任何变量时,表单会提交并忽略event.preventDefault();和/或返回错误 下面是一个简单的测试: 代码如下: JS:Javascript 将变量传递给绑定到表单提交的函数会破坏默认值并返回false,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,我试图执行一个绑定到表单的函数,该函数阻止浏览器提交表单,并检查表单是否缺少字段,如果没有字段,则继续通过Ajax提交表单 问题是,页面包含许多非常相似的表单,具有相同的字段,每个表单元素的ID后面只有唯一的数字。我想将该数字传递给绑定到相关表单的函数,但是当我初始化除“event”变量以外的任何变量时,表单会提交并忽略event.preventDefault();和/或返回错误 下面是一个简单的测试: 代码如下: JS: $('#contact-form1').submit( submitF
$('#contact-form1').submit( submitForm("1") );
function submitForm(formId,event) {
var contactForm = $(this);
var forename = '#contact-forename' + formId;
var surname = '#contact-surname' + formId;
var email = '#contact-email' + formId;
var tel = '#contact-tel' + formId;
if ( !$(forename).val() || !$(surname).val() || !$(email).val() || !$(tel).val() ) {
$('.form-status').removeClass("current-status");
$('.contact-incomplete').addClass("current-status");
} else {
$('.form-status').removeClass("current-status");
$('.contact-sending').addClass("current-status");
$.ajax( {
url: contactForm.attr( 'action' ) + "?ajax=true",
type: contactForm.attr( 'method' ),
data: contactForm.serialize(),
success: submitFinished
} );
}
return false;
}
问题似乎在于试图将变量传递给函数。.submit()
需要函数引用。您所做的是调用一个返回值false
的函数。这就像做:
$('#contact-form1').submit( false );
这没什么用
您可以做的是传递一个匿名函数来调用您的函数。诸如此类:
$('#contact-form1').submit( function(e){
e.preventDefault();
submitForm.call(this, "1", e);
});
但这很好:
$('contact-form1').submit(submitForm)
@danielvandspuy这是因为您正在传递一个引用(如.submit()
expect)。添加()
时,您正在调用它!这可能会对您有所帮助:好的,我想我理解,但是您对更复杂的函数/调用的建议仍然会导致表单以传统方式提交。我不明白是什么导致功能中断。感谢您迄今为止的帮助:)@DanielvanderSpuy您是否在.submit(函数(**e**
)中传递了e
?如果是,您是否在同一函数中使用了e.preventDefault()
?控制台中有任何错误?是的,我传递了,并且当我被提交文件引导离开页面时,没有机会捕捉到任何错误:/