2013-08-28 112 views
0

我有一個窗體,當用戶沒有輸入有效數據到表單字段時,在HTML標籤中顯示錯誤消息。該標籤顯示在表單字段下方onBlur並停留在那裏,直到數據輸入表單字段。我希望標籤僅在用戶點擊表單字段而不是持久顯示時才顯示。下面是我試圖隱藏錯誤標籤的腳本,因爲用戶從表單字段中跳出。我想我一旦能夠有效地隱藏它就會擔心它會再次出現。jQuery,如果hasClass隱藏模糊元素

下面是HTML:

<div class="field"> 
    <input type="text" name="firstname" id="firstname" class="error has-error"> 
    <label for="firstname" class="error">First Name is required.</label> 
    </div> 

和腳本

<script type="text/javascript"> 
    if($('.fieldset #firstname').hasClass('error')) { 
    $(this).blur($('.field label')).hide(); 
    } 
</script> 
+0

不要在'if'語句中綁定處理程序。把你的'if'語句放在處理程序中。 –

+0

根據你的代碼,'$(this)'是指窗口? – Dom

+0

你是否單獨綁定每個'input'元素的處理函數?或者你只有一個元素?如果填寫錯誤,你想隱藏「輸入」指南嗎?這沒有什麼意義(如果正確填寫了「輸入」,我可以想象隱藏「標籤」)。 –

回答

0

你需要一個函數傳遞到.blur()函數作爲回調,這樣的事情:

$(".fieldset #firstname").blur(function(evt) { 
    if($(this).hasClass('error')) { 
     $(".field label", $(this).parent()).hide(); 
    } 
}); 

請注意,我在$(this)的parent()的上下文中執行.field標籤選擇器。 $(this)將引用#firstname,所以如果你得到了父對象,你可以很容易地在該節點樹中選擇,而不會意外地在頁面中獲得其他.field標籤。

0

您需要將if條件放在on模糊處理程序中。

$('.fieldset #firstname').blur(function(){ 
    if ($(this).hasClass('error')){ 
     $('.field label')).hide(); 
    } 
})