【问题标题】:Angularjs directive - keydown listener is invoked with delayAngularjs 指令 - 延迟调用 keydown 侦听器
【发布时间】:2016-10-02 14:21:04
【问题描述】:

我有一个指令make-caps 应用于输入元素。它将在用户键入时将输入框中的所有字符转换为大写。

现在,指令将其事件侦听器附加到keydown 事件。

link : function(scope, element, attrs){
    element.bind('keydown', function(event){
        //$timeout(function(){
            element[0].value = element[0].value.toUpperCase();
        //});
    })
}

大写对所有人都有效,除了最后一个字符被省略。如果用户输入elle,它将呈现ELLe。我可以通过将代码包装在 $timeout 块中来修复它,但我很好奇为什么当我设置 element[0].value 时视图没有更新

Plunker 代码是here

【问题讨论】:

    标签: angularjs angular-directive


    【解决方案1】:

    这是因为keydown 事件在新字符添加到输入值之前触发。使用keyup

    element.bind('keyup', function(event){
        element[0].value = element[0].value.toUpperCase();
    
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2014-08-21
      • 2015-10-19
      • 1970-01-01
      • 2012-09-22
      • 2021-07-14
      • 1970-01-01
      相关资源
      最近更新 更多