javascript - 将变量传递给绑定(bind)到表单提交的函数会破坏 PreventDefault 并返回 false

标签 javascript jquery ajax forms

我正在尝试执行一个绑定(bind)到表单的函数,该函数会阻止浏览器提交表单并检查该表单是否缺少字段,如果没有,它将继续通过 Ajax 提交表单

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

这是一个简单的测试:

http://jsfiddle.net/q3mae60g/

代码如下:

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/

相关文章:

javascript - 在 EXTjs 4 中显示包含 'partial'/'nested' 小部件的 View

javascript - 在react中从父组件中删除多个子组件

javascript - 如何使用 Node.js 读取文本文件并将其写入 HTML 页面?

javascript - 当前最好的 Javascript 模板引擎是什么?

javascript - 没有 javascript 时 AJAX 得到备份

javascript - 使用ajax从函数重新加载php数据

javascript - 如何使用纯javascript将xhr请求存储在缓存中

javascript - jQuery setInterval 给出无效参数

javascript - Canvas 图像到 Blob ,改变图像大小

javascript - ajax post 不适用于 ajax get from inside div