2014-03-27 27 views
0

這個問題之前已經被問過了,但是,在使用了很多描述的方法之後,我無法得到它的工作。html輸入改變背景值不等於0

我試圖改變一個div的背景,當用戶重點在一個輸入框,也有內部文本,即!= 0。我可以讓焦點工作,但模糊不能正常工作。

的jQuery:

$('.pI_nameText1').focus(function() { 
    $(".nameLights").addClass("lightOverlay"); 
}); 
$('.pI_nameText1').blur(function() { 
    $(".nameLights").removeClass('lightOverlay'); 
    if ($(".pI_nameText1").val == '') { 
     $('.nameLights').removeClass("lightOverlay"); 
    } 
}); 

HTML:

<input id="comments" placeholder="Type many lines of texts in here and you will see magic stuff" class="pI_nameText1"></input> 
<div class="nameLights"></div> 

這裏是一個小提琴:http://jsfiddle.net/3fnzL/

我認爲,這個問題可能與我是怎麼寫的if語句..

+0

你總是在刪除同一個班級,我不明白嗎? – adeneo

+0

就是這樣 - > http://jsfiddle.net/adeneo/3fnzL/1/ – adeneo

+0

你的意思是如果用戶輸入了文本,你想讓這個類保持原樣? – slynagh

回答

2

我相信這是proper answer 。您應該使用.val()代替.val,我也圍繞if語句的順序改變,使其更加符合邏輯的:

$('.pI_nameText1').blur(function() { 
    if ($(".pI_nameText1").val() == '') { 
     $(".nameLights").removeClass('lightOverlay') 
    } 
}); 

在未來,你應該使用console.log();進行調試。與console.log($(".pI_nameText1").val)它返回一個對象,而不是一個字符串,這是一個明確的問題是什麼。您可以使用F12在大多數瀏覽器中訪問控制檯,也可以右鍵單擊,選擇檢查元素,然後在開發人員窗口中查找控制檯選項卡。

+0

謝謝詹姆斯,我知道這是語法相關的東西...我以前見過控制檯,但沒有真正知道如何...有沒有一個原因,它爲什麼簡單地返回「」,如果你有它使用? – sventizzle

+0

@sventizzle'console.log()'返回任何內容到控制檯。目前在小提琴中,只有當值等於空時,它才返回文本框的值。如果你將它移到'if'語句之外,它將打印'.blur'文本框中的任何內容。任何變量,字符串或數字都可以通過控制檯以這種方式返回。 –