簡體   English   中英

將變量傳遞給綁定到表單提交的函數會中斷preventDefault並返回false

[英]Passing a variable to a function bound to a form submission breaks preventDefault and return false

我正在嘗試執行綁定到表單的功能,該功能會阻止瀏覽器提交表單並檢查該表單中是否缺少字段,如果沒有表單,它將繼續通過Ajax提交表單

問題是,頁面包含許多非常相似的表單,這些表單具有相同的字段,但每個表單元素的ID后僅具有唯一的數字。 我想將該數字傳遞給綁定到相關表單的函數,但是當我初始化除“ event”變量之外的任何變量時,表單將提交並忽略event.preventDefault();。 AND / OR返回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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM