我正在尝试执行一个绑定(bind)到表单的函数,该函数会阻止浏览器提交表单并检查该表单是否缺少字段,如果没有,它将继续通过 Ajax 提交表单
问题是,该页面包含许多非常相似的表单,这些表单具有相同的字段,只是每个表单元素的 ID 后面有唯一的数字。我想将该数字传递给绑定(bind)到相关表单的函数,但是当我初始化“event”变量以外的任何变量时,表单会提交并忽略 event.preventDefault();和/或返回 false;
这是一个简单的测试:
代码如下:
JS:
$('#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);
});
关于javascript - 将变量传递给绑定(bind)到表单提交的函数会破坏 PreventDefault 并返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121167/