jQuery隐藏元素和isVisible问题

Ata*_*man 3 validation jquery visible

我基本上是在尝试进行表单验证.Evertyhing工作正常.除了一件事.首先,这是我的代码:

        $('#submit_btn').click(function(){  

        $("input:not([type=radio],[type=checkbox])").each(function() {
                if ($(this).val() == ""){
                 $('#'+$(this).attr("name")+'_error').show("");
                }
                else{
                   $('#'+$(this).attr("name")+'_error').hide("normal");
                }

            });
            if(!($("div[id$=error]").is(":visible")))
                               alert("a");

        });
Run Code Online (Sandbox Code Playgroud)

单击提交按钮后,它会检查不是单选按钮或复选框的输入.如果输入为空,则显示错误.

如果键入了某些输入,则会隐藏错误.

最后,我检查是否有任何错误消息,如果没有,我将提交表格.

我的问题是,我用一个带有.hide("normal")的小动画隐藏错误信息.所以我相信在躲藏期间的最后一个错误消息的过程中,我的最后一个if语句执行它认为有一个明显的错误信息(但是,它是隐藏的进程)

隐藏进程完成后如何执行if语句?

在我的情况下,当没有剩余错误消息时,我会在另一次点击提交按钮后收到警报.

我希望我清楚我的问题.如果不是,我会尝试重写它.

谢谢!

lon*_*day 5

这样做:visible有点hacky,并且肯定很慢.改为使用变量:

$('#submit_btn').click(function(){  
    var error = false;

    $("input:not([type=radio],[type=checkbox])").each(function() {
        if ($(this).val() == ""){
            $('#'+$(this).attr("name")+'_error').show(400);
            error = true;
        }
        else{
            $('#'+$(this).attr("name")+'_error').hide(400);
        }
    });
    if(error)
        alert("a");

});
Run Code Online (Sandbox Code Playgroud)