1

这里有个小问题。我有一个留言簿表格,每个输入都经过验证,因此它是空的,会出现一条错误消息。我已经调整了 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+']'

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

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

4

1 回答 1

1

你是对的 :

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

意味着您附加一个元素,等待并淡出任何选择了 [for=...] 的元素。

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

$('<div class="error">'+v+'</div>').appendTo('[for='+k+']').delay(2000).fadeOut();
于 2012-04-29T16:38:01.127 回答