我想在验证自定义正则表达式后停止输入任何数字,问题是条件变为真,但event.preventDefault不会阻止输入,正则表达式将以1-100的百分比输入值,带小数
/^(100(\.0{1,2})?|[1-9]?\d(\.\d{1,2})?)$/
这是我的意见
<input type='text' (keyup)="preventPercentage($event)" [(ngModel)]="value">
ts
preventPercentage(event){
var p = event.target.value
var s= p.match(/^(100(\.0{1,2})?|[1-9]?\d(\.\d{1,2})?)$/) != null
if(!s && p){
event.preventDefault();
}
}
即使条件为真,用户仍然可以输入任何值
输入高于100的任何值仍然有效,并且事件不会阻止值
<input type='text' (keydown)="preventPercentage($event)" [(ngModel)]="value">
我使用了按键输入法,但是它允许输入123,即三位数
然后我无法使用退格键删除该数字,正是我做错了什么,任何人都可以提出解决方案,我们将不胜感激
最佳答案
尝试这个。我认为您需要根据正则表达式进行更改。
preventPercentage(event){
var p = event.target.value + event.key;
var s = p.match(/^(100(\.0{1,2})?|[1-9]?\d(\.\d{1,2})?)$/) != null;
if (!s && event.keyCode !== 8) {
event.stopPropagation();
return false;
}
}
将此与keydown一起使用:
<input type='text' (keydown)="preventPercentage($event)" [(ngModel)]="value">
关于javascript - 键入防止默认不起作用angular6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53387359/