2010-04-09 51 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