我有一个形式,我希望用户只提交一个数字(不是十进制(,他将没有书写的选项。(dot(符号。为了写小数号。我想完全阻止编写的选项。(点(以表格。有可能吗?
我在这里尝试了解决方案:适当限制文本输入值的正确方法(例如,数字(使用正则:
在component.ts中添加此功能
_keyUp(event: any) {
const pattern = /[0-9+- ]/;
let inputChar = String.fromCharCode(event.charCode);
if (!pattern.test(inputChar)) {
// invalid character, prevent input
event.preventDefault();
}
}
在模板中使用以下
<input(keyup)="_keyUp($event)">
但它不起作用,编写的选项。
我想完全阻止写入的选项。(点(以表格。
我相信该角色在keyup
事件时已经存在,并且您不能预防已经发生的事情。尝试keypress
事件:
<input (keypress)="_keyUp($event)">
@cdelaney是正确的,但是一些其他想法:这个(找到的(stackblitz我会说更好:
组件html:
<input (keypress)="numberOnly($event)" type="text">
和TS文件:
numberOnly(event): boolean {
const charCode = (event.which) ? event.which : event.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
为什么更好?
没有正则:俗话说,如果您尝试解决正则问题,现在有两个问题。
按键,它将更接近您想要的东西而无需更换字符串
更好的事件名称。如果我有我的druthers _namesofanything永远不会是一回事。