jquery else if语句不起作用

时间:2012-05-28 13:41:12

标签: jquery ajax forms if-statement

如果用户没有完成整个表单但我似乎没有按照我的意愿工作,我想显示一条警告消息。 jQuery .each方法仅从第一个输入字段收集数据。如果我将第一个字段留空,则它可以正常工作,但如果我只填充第一个字段并将其他字段留空,则显示成功是错误的。

// send message on click
$("#submit").click(function() {

    // store values
    var data = $("#form").serialize();

    $(":input, textarea").each(function() {

        // if empty show warning
        if ( $(this).val() === "" ) {
            $(".message-fail").fadeIn(500);
        }

        // if not empty send message
        else if ( !$(this).val() ) {
                $.ajax({
                    type: "POST",
                    url: "mail.php",
                    data: data,
                    success: function() {
                        $(".message-sent").fadeIn(500);
                    }
                });
        }

    });

});

3 个答案:

答案 0 :(得分:1)

您可以执行以下过程:

但我认为你不需要每场都使用AJAX

if ($.trim(this.value).length) { // if value exists
    $(".message-fail").fadeIn(500);
} else { // if no value exists, here no need to elseif
    $.ajax({
        type: "POST",
        url: "mail.php",
        data: data,
        success: function() {
            $(".message-sent").fadeIn(500);
        }
    });
}

说明:

$.trim(this.value) - >检查值是否存在

或者也可以使用(第一个更好)

$.trim($(this).val()).length - >检查值是否存在

答案 1 :(得分:0)

在这一行else if ( !$(this).val() )中存在错误的条件,即!$(this).val()请将其设为正确无误...

答案 2 :(得分:0)

你需要在“每个”之外放置“else”,因为第一个有效输入将发布表单:) 制作一个标志变量,在每个内部进行检查......但最好使用简单的循环。并且在检查完成之后再对你的国旗进行检查,如果没有则发布