验证错误消息淡出后,标签消失

时间:2012-04-29 16:24:31

标签: php jquery validation fadeout

这里有点问题。我有一个留言簿的表单,每个输入都经过验证,因此它是空的,会出现一条错误消息。我调整了jquery部分,以便在淡出之前将错误消息延迟2秒,如下所示:

$(document).ready(function(){

var working = false;

$('#addCommentForm').submit(function(e){

    e.preventDefault();
    if(working) return false;

    working = true;
    $('#submit').val('Working..');
    $('.error').remove();

    $.post('submit.php',$(this).serialize(),function(msg){

        working = false;
        $('#submit').val('Submit');

        if(msg.status){

            $(msg.html).hide().insertAfter('#new').slideDown();
            $('#body').val('');
        }


        else {
            /* This is the section im stuck with */
            $.each(msg.errors,function(k,v){
                $('[for='+k+']').append('<div class="error">'+v+'</div>').delay(2000).fadeOut();
            });

        }

    },'json');

});

});

但是,在错误消息淡出后,标签也会消失。我觉得它与代码的这一部分有关:

'[for='+k+']'

有什么办法可以解决这个问题,所以只有错误信息会消失而不是标签吗?

如果您需要我的更多代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

你是对的:

$('[for='+k+']').append('<div class="error">'+v+'</div>').delay(2000).fadeOut();

表示你附加了一个元素,等待,并且fadeOut选择了[for = ...]的任何元素。

解决方案可能正在使用appendTo()

$('<div class="error">'+v+'</div>').appendTo('[for='+k+']').delay(2000).fadeOut();