javascript - 使用 angular-ui-mask 时屏蔽 SSN 的前 5 个字符
问题描述
我使用 angular-ui-mask 以这种格式 123-45-6789 显示 ssn,但我还想在输入框失去焦点时隐藏前 5 个字符,并在输入框获得焦点时显示所有数字。
我的 HTML
<input class="btnDropdown"
id="phoneTextInput"
ui-mask="{{uimaskpattern}}"
ui-mask-placeholder-char=""
ng-focus="applymask()"
ng-blur="phoneForm['Phone_'+$index].$viewValue = removemask(contact.contactDetails.attributeDetails.contact)"
md-minlength="10"
md-maxlength="10"
name="Phone_{{$index}}"
ng-model="contact.contactDetails.attributeDetails.contact">
角代码:
uimaskpattern 的初始值 = "999-99-9999"
//When input gets focus
public applymask() {
this.uimaskpattern = "999-999-9999";
}
//When input loses focus
public removemask(ssn) {
if (ssn) {
console.log(ssn);
this.uimaskpattern = "XXX-XXX-9999";
let formstring = 'XXX-XXX-'+ssn.slice(6, ssn.length);
console.log(formstring);
return formstring;
}
}
我面临的问题是,在模糊时,如果用户输入 123456789,那么在模糊时,文本变为 XXX-XX-1234,而不是 XXX-XX-6789,即,而不是 6789,附加的数字是前 4,如果我只是用 {{}} 打印返回的字符串,它正在正确显示
解决方案
如下更改 ng-blur
ng-blur="removemask(contact.contactDetails.attributeDetails.contact)"
并按如下方式删除掩码功能并立即检查。它可能会起作用
public removemask(ssn) {
if (ssn) {
console.log(ssn);
this.uimaskpattern = "XXX-XXX-9999";
let formstring = 'XXX-XXX-'+ssn.slice(6, ssn.length);
console.log(formstring);
ssn=formstring;
}
}
推荐阅读
- python - 选择任意 3D 形状的内部节点
- input - Julia 传递参数,读取命令行
- c++ - C++ 编译指示部分和导入
- c# - 为什么 EvaluateJavaScriptAsync 没有被执行?
- linux - 是否可以将 tr 与文件中的内容一起使用?
- typescript - 无法读取未定义数组打字稿的属性“长度”
- postgresql - 在范围之间的搜索中加入与子查询
- google-sheets - 计算一列数据的订单号并将其写到谷歌表格上的另一列
- azure-active-directory - 在 Azure AD 中创建自定义角色时,“Actions”中的参数到底有什么作用?
- webpack - 如何在 Webpack 中生成动态导入块名称