使用angularjs保留光标位置

使用angularjs保留光标位置,第1张

使用angularjs保留光标位置

一种这样做的方式

  • 输入仅清洗一次
  • ngChange
    然后只触发一次

是使用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-Zd]/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中查看实际使用情况



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5126304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存