Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量传递给绑定到表单提交的函数会破坏默认值并返回false_Javascript_Jquery_Ajax_Forms - Fatal编程技术网

Javascript 将变量传递给绑定到表单提交的函数会破坏默认值并返回false

Javascript 将变量传递给绑定到表单提交的函数会破坏默认值并返回false,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,我试图执行一个绑定到表单的函数,该函数阻止浏览器提交表单,并检查表单是否缺少字段,如果没有字段,则继续通过Ajax提交表单 问题是,页面包含许多非常相似的表单,具有相同的字段,每个表单元素的ID后面只有唯一的数字。我想将该数字传递给绑定到相关表单的函数,但是当我初始化除“event”变量以外的任何变量时,表单会提交并忽略event.preventDefault();和/或返回错误 下面是一个简单的测试: 代码如下: JS: $('#contact-form1').submit( submitF

我试图执行一个绑定到表单的函数,该函数阻止浏览器提交表单,并检查表单是否缺少字段,如果没有字段,则继续通过Ajax提交表单

问题是,页面包含许多非常相似的表单,具有相同的字段,每个表单元素的ID后面只有唯一的数字。我想将该数字传递给绑定到相关表单的函数,但是当我初始化除“event”变量以外的任何变量时,表单会提交并忽略event.preventDefault();和/或返回错误

下面是一个简单的测试:

代码如下:

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);
});

但这很好:
$('contact-form1').submit(submitForm)
@danielvandspuy这是因为您正在传递一个引用(如
.submit()
expect)。添加
()
时,您正在调用它!这可能会对您有所帮助:好的,我想我理解,但是您对更复杂的函数/调用的建议仍然会导致表单以传统方式提交。我不明白是什么导致功能中断。感谢您迄今为止的帮助:)@DanielvanderSpuy您是否在
.submit(函数(**e**
)中传递了
e
?如果是,您是否在同一函数中使用了
e.preventDefault()
?控制台中有任何错误?是的,我传递了,并且当我被提交文件引导离开页面时,没有机会捕捉到任何错误:/