加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs掩码覆盖字符

发布时间:2020-12-17 17:37:41 所属栏目:安全 来源:网络整理
导读:我使用angular-ui mask模块在日期字段上设置了掩码,如下所示: input type="text" id="date" ng-model="transaction.date" ui-mask="99/99/9999" / 如果我在该字段中有30/05/2013,并且想要将其更改为10/05/2013,只需在开头添加一个’1′,它就会将所有字符推
我使用angular-ui mask模块在日期字段上设置了掩码,如下所示:

<input type="text"
     id="date"
     ng-model="transaction.date"
     ui-mask="99/99/9999" />

如果我在该字段中有30/05/2013,并且想要将其更改为10/05/2013,只需在开头添加一个’1′,它就会将所有字符推到一起,因此它变为13/00/5201.

有没有办法强制ui-mask覆盖插入它的角色? (这样可以避免某人点击’删除’然后再出现这个角色.

示例:http://jsfiddle.net/5NbD7/
如果你在我的例子的前面键入’30’,你将最终得到30/01/0120我宁愿它覆盖字符并产生30/01/2010

解决方法

我不知道有一种更简单的方法,但你尝试以下方法:

>你需要从源代码下载mask.js,unminified,并在你的html中链接它,如果你还没有这样做的话.

https://rawgithub.com/angular-ui/ui-utils/master/modules/mask/mask.js

>然后你需要像这样修改mask.js的源代码(搜索注释//更新值并在下面输入此代码):

// Update values
          if (oldValueUnmasked !== "" && oldValueUnmasked!==valUnmasked && !isDeletion) {
             var charIndex = maskCaretMap.indexOf(caretPos);
             if (charIndex === -1) {
               charIndex = maskCaretMap.indexOf(caretPos+1);
             }
             valUnmasked=valUnmasked.substr(0,charIndex).concat(oldValueUnmasked.substr(charIndex,valUnmasked.length));
           }

现在,在更新值之前,mask将根据光标(插入符号)的位置对旧值中的字符和新值中的字符进行串联.

它绝不是一个防范解决方案,但如果你想更多地定制输入或者检查这个改变不会破坏其他任何东西,它应该让你知道在哪里看.

小提琴:
http://jsfiddle.net/CALvj/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读