2010-04-09 50 views
4

我試圖添加一個類(.active)到文本字段,一旦用戶開始輸入。我使用下面的代碼對它進行了一些工作,但由於某些原因,當用戶開始鍵入時,.active類不會立即應用,只會在輸入第二個字母后應用。有任何想法嗎?jQuery的活keydown不註冊,直到第二keydown

$(document).ready(function() { 

    loginField = $('.field'); 

    loginField.live('keydown', function(){ 
     if ($(this).val()){ 
      $(this).addClass('active');  
     } 
    }); 
}); 

回答

4

你要keyup這裏,更新基於意見

$(document).ready(function() {  
    $('.field').live('keydown', function(){ 
     $(this).addClass('active'); 
    }).live('keyup', function() { 
     $(this).toggleClass('active', $(this).val() != ''); 
    }); 
}); 

.live()正確射擊,但.val()值更新之前不會直到keyup火災,火災​​改變,所以你的if()是不正確的,直到第二個鍵被按下。

+1

感謝您的提示,尼克。使用keyup會更好,但由於.active類只在用戶釋放密鑰後添加,它仍然不是即時的。有什麼辦法讓用戶在按下鍵時添加正確的類嗎? – Simon 2010-04-09 18:10:26

+0

@Simon - 每當它有*任何*文本時它應該是活動的?或者只有當它被編輯並且有文本時? – 2010-04-09 18:12:46

+0

選項2,當它被編輯並且有文本時。我已經有其餘的js工作,用於移除模糊上的.active類。 – Simon 2010-04-09 18:20:18