2012-04-29 73 views
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+']' 

有沒有什麼辦法可以解決這個問題,因此,只有錯誤消息淡出,而不是標籤嗎?

如果您需要更多的代碼,請告訴我。

+0

請張貼的JavaScript的休息,最好你能不能生產出的jsfiddle例如與它 –

+0

走已經添加了整個submit.js代碼 – Lodder

回答

1

你說得對:

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

意味着你追加一個元素,等待,淡出與[爲= ...]選擇的元素。

一個解決方案可以使用appendTo()

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

代碼你送我工作。非常感謝你,真的很感激 – Lodder