javascript - 用于字符串操作的 ng-Mask
问题描述
我正在尝试转换/仅允许输入中的掩码定义值。可以说 - 大写。Mask code 'A' regEx : [A-Z]
<input type="text" class="form-control" mask="AAAA">
只期望 [AZ] 范围为 4 (ABCD) 的大写字符。 但是上述代码既没有转换为大写,也没有限制输入小写。任何建议将不胜感激。谢谢
解决方案
如果您想限制用户输入并以大写形式显示字符,那么您可以创建一个指令来实现该行为。
例如 -
@Directive({
selector: '[char-mask]'
})
export class CharDirective {
@Input() upperCase = true;
@HostBinding('class.upper')
get upper() {
return this.upperCase;
}
@HostListener('keydown', ['$event'])
onKeydown(e) {
if (!this.validateKeyCode(e.keyCode, e.target.value)) {
e.preventDefault();
}
}
private validateKeyCode(keyCode: number, value: string): boolean {
var inp = String.fromCharCode(keyCode);
if ((/[a-zA-Z]/.test(inp)) && (value.length <= 3)) {
return true;
}
const whiteListedCodes = [8, 9, 13, 16, 37, 39];
if (whiteListedCodes.indexOf(keyCode) > -1) {
return true;
}
}
并在需要行为的输入上使用。
<input class="form-control" char-mask />
对于实施,您可以参考 - https://stackblitz.com/edit/angular-char-only-mask?file=src/app/char-mask.ts
我希望它会有所帮助。
推荐阅读
- javascript - 复选框 ace.js(在线编辑器)
- python - 静态 django 2 的 TemplateSyntaxError
- feathersjs - $ne 在 MongoDB 查询中不起作用
- symfony - Symfony Doctrine 序列化深度关系
- c++ - 在初始化列表中使用取消引用的指针初始化变量
- validation - Xtext - 验证重复名称
- python - 如何在 Python 中使用 numpy 将数组的值替换为另一个数组
- java - 如何在 JavaFX 中正确显示此特定形状路径?
- python-3.x - proc.stderr.readlines() 挂起特定的 svn 路径
- python - Pandas 系列矢量化文本处理