您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用angularjs保留光标位置

使用angularjs保留光标位置

一种这样做的方式

是使用ngModelController提供的$parsers数组。它被设计为影响模型值(通过其返回值)的地方,但是它也可以用作输入事件的侦听器。

app.directive('cleanInput', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attrs, ngModelController) {
      var el = element[0];

      function clean(x) {
        return x && x.toUpperCase().replace(/[^A-Z\d]/g, '');
      }

      ngModelController.$parsers.push(function(val) {
        var cleaned = clean(val);

        // Avoid infinite loop of $setViewValue <-> $parsers
        if (cleaned === val) return val;

        var start = el.selectionStart;
        var end = el.selectionEnd + cleaned.length - val.length;

        // element.val(cleaned) does not behave with
        // repeated invalid elements
        ngModelController.$setViewValue(cleaned);
        ngModelController.$render();

        el.setSelectionRange(start, end);
        return cleaned;
      });
    }
  }
});

但是,我不确定这种用法$parsers是否有点骇人听闻。该指令可以用作:

<input type="text" clean-input ng-model="name">

或者如果您想要一个ngChange功能

<input type="text" clean-input ng-model="name" ng-change="onChange()">

可以在http://plnkr.co/edit/dAJ46XmmC49wqTgdp2qz?p=preview中查看实际使用情况

其他 2022/1/1 18:17:59 有508人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶