Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquerylivekeydown不';直到第二次按键时才注册_Jquery - Fatal编程技术网

jquerylivekeydown不';直到第二次按键时才注册

jquerylivekeydown不';直到第二次按键时才注册,jquery,Jquery,我试图在用户开始键入时向文本字段添加一个类(.active)。我让它在某种程度上与以下代码一起工作,但由于某种原因,当用户开始键入时,不会立即应用.active类,它只在键入第二个字母后应用。有什么想法吗 $(document).ready(function() { loginField = $('.field'); loginField.live('keydown', function(){ if ($(this).val()){ $

我试图在用户开始键入时向文本字段添加一个类(.active)。我让它在某种程度上与以下代码一起工作,但由于某种原因,当用户开始键入时,不会立即应用.active类,它只在键入第二个字母后应用。有什么想法吗

$(document).ready(function() {

    loginField = $('.field');

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

您希望
keyup
此处根据评论更新

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

您的
.live()
正在正确启动,但是
.val()
直到
keyup
启动才会更改,
keydown
在值更新之前启动,因此您的
if()
直到按下第二个键后才为真。

谢谢您的提示,尼克。使用keyup更好,但由于.active类仅在用户释放密钥后添加,因此它仍然不是即时的。有什么方法可以让类在用户按下键时正确添加吗?@Simon-只要有文本,它就应该处于活动状态?或者仅当正在编辑且其中包含文本时?选项2,当正在编辑且其中包含文本时。我已经让js的其余部分删除blur上的.active类。@Simon-尝试更新的示例,这会立即添加该类,而不管值是多少,然后检查键何时被解除,如果值为空,则删除该类。