这里有点问题。我有一个留言簿的表单,每个输入都经过验证,因此它是空的,会出现一条错误消息。我调整了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+']'
有什么办法可以解决这个问题,所以只有错误信息会消失而不是标签吗?
如果您需要我的更多代码,请告诉我。
答案 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();