栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用angularjs保留光标位置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号