【发布时间】:2019-07-22 17:38:45
【问题描述】:
我是堆栈溢出的新手,所以如果我在任何地方错了,请原谅我。我在 Angular 6 中遇到了问题,我几乎没有输入数字和文本类型的字段,我想阻止用户输入除“。”之外的任何字符。 (点)并且仅输入带有单个点的正数,例如。 “1.22”而不是“1..2”。或“-1.12”或“-111”。
我尝试过 (keyup)、(keypress) 和 (keydown),但它们中的每一个都让我感到困惑。请告知是否有任何指令或任何解决方案。 在html中
<input type="number"(keyup)="numberOnlyWithDecimal($event,xyz)" name="weight [(ngModel)]="xyz" min="0" step="0.1">
在.ts中
public textlength=0;
numberOnlyWithDecimal(event, text): boolean {
var regex = /^\d+(\.\d+)?$/;
const charCode = (event.which) ? event.which : event.keyCode;
var text2 = text + ''
var test = text2.split(".")
if (text2) {
this.textlength = test.length-1 ;
}
if(text == null && charCode == 46){
return false;
}
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
if (!regex.test(charCode)) {
return false
}
if (charCode === 46 && this.textlength ===1 ) {
return false
}
return true;
}
【问题讨论】:
-
鼠标右键单击并选择“粘贴”将绕过任何限制用户何时可以按下键的尝试。
-
实际上粘贴不是我正在工作的项目中的问题。我只希望用户只能输入最多一个点的正值。
标签: angular typescript