angularjs掩码覆盖字符

前端之家收集整理的这篇文章主要介绍了angularjs掩码覆盖字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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/

猜你在找的Angularjs相关文章