jQuery live keydown 在第二次 keydown 之前不会注册

标签 jquery

我试图在用户开始输入后将类(.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() 在按下第二个键之前不为 true。

关于jQuery live keydown 在第二次 keydown 之前不会注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609691/

相关文章:

javascript - Jquery从输出元素突出显示表行中的匹配元素

javascript - 使用 backbone 时 css 不工作

javascript - 将单击事件传递到容器中而无需重新单击容器

javascript - jquery 背景动画与#anchor 冲突

javascript - 你如何使用:focus if you're also setting properties with Javascript?

javascript - 使用 javascript/jquery 按标题滚动到 div

javascript - 为每个单词重置计数

jquery - 遍历 div 内的文本节点

javascript - AJAX 多表单提交

javascript - Chrome 扩展消息作为对象传递