0

如果用户没有完成整个表单,我想显示一条警告消息,但它似乎没有按我的意愿工作。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);
                    }
                });
        }

    });

});
4

3 回答 3

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-> 检查值是否存在

于 2012-05-28T13:43:31.560 回答
0

在这一行else if ( !$(this).val() )有错误的条件,即!$(this).val()请纠正它会起作用....

于 2012-05-28T13:44:00.617 回答
0

您需要将“else”放在“each”之外,因为第一个有效输入将发布表单:) 创建一个标志变量,在每个内部进行检查......但最好使用简单的循环。并在完成检查后再次检查您的标志并发布是否可以

于 2012-05-28T13:48:04.627 回答