Angular 如何使用TypeScript在html输入类型文本中只允许数字?

Angular 如何使用TypeScript在html输入类型文本中只允许数字?,angular,typescript2.0,Angular,Typescript2.0,我有一个HTML文本框。如何在按键事件中只允许数字? 有一个type=number,但是我有使用type text的方法。您可以在组件中使用,并且为了在输入字段中只允许数字,您可以使用验证器。模式(“^\\d+$”如minlength,所需的验证在此表单中处理。您可以在组件中使用,并且对于只允许输入字段中的数字,您可以使用验证程序。模式(^\\d+$”与minlength一样,所需的验证在此表单中处理。您可以在文本输入中使用“按键”事件。你可以使用这个功能 public OnlyNumb

我有一个HTML文本框。如何在按键事件中只允许数字? 有一个
type=number
,但是我有使用type text的方法。

您可以在组件中使用,并且为了在输入字段中只允许数字,您可以使用
验证器。模式(“^\\d+$”
如minlength,所需的验证在此表单中处理。

您可以在组件中使用,并且对于只允许输入字段中的数字,您可以使用
验证程序。模式(^\\d+$”
与minlength一样,所需的验证在此表单中处理。

您可以在文本输入中使用“按键”事件。你可以使用这个功能




public OnlyNumbers($event){
让regex:RegExp=newregexp(/^[0-9]{1,}$/g);
让specialKeys:Array=['Backspace','Tab','End','Home','ArrowRight','ArrowLeft'];在此处输入代码
if(specialKeys.indexOf($event.key)!=-1){
返回;
}否则{
if(正则表达式测试($event.key)){
返回true;
}否则{
返回false;
}
}
}
您可以在文本输入中使用“按键”事件。你可以使用这个功能




public OnlyNumbers($event){
让regex:RegExp=newregexp(/^[0-9]{1,}$/g);
让specialKeys:Array=['Backspace','Tab','End','Home','ArrowRight','ArrowLeft'];在此处输入代码
if(specialKeys.indexOf($event.key)!=-1){
返回;
}否则{
if(正则表达式测试($event.key)){
返回true;
}否则{
返回false;
}
}
}
HTML:


TS文件包含以下函数

onTextboxChangeValidate(事件:事件)
{
var inputData=(event.target).value;
//替换多个点
var extractedFte=inputData.replace(/[^0-9.]/g')。replace('.','')
.替换(/\./g.)。替换('x',');
//提取数字值
extractedFte=extractedFte.replace(/^(\d+)\d*$/,“$1”);
//重新设计为同一控制
(event.target).value=extractedFte;
}
HTML:


TS文件包含以下函数

onTextboxChangeValidate(事件:事件)
{
var inputData=(event.target).value;
//替换多个点
var extractedFte=inputData.replace(/[^0-9.]/g')。replace('.','')
.替换(/\./g.)。替换('x',');
//提取数字值
extractedFte=extractedFte.replace(/^(\d+)\d*$/,“$1”);
//重新设计为同一控制
(event.target).value=extractedFte;
}

请参见:为什么需要文本框?如果你只接受数字,你为什么要使用文本?是谁或是什么迫使你这么做的?看看这个:为什么你需要文本框?如果你只接受数字,你为什么要使用文本?是谁或是什么迫使你这么做的?是的,这是可行的,但你可以更喜欢这个问题的指令。是的,这是可行的,但你可以更喜欢这个问题的指令。欢迎来到SO!请解释一下你的代码是做什么的,否则有同样问题的用户将无法了解你的解决方案。事实上,我编写了一个函数来限制2位小数的值,我是从上面推导出来的。我们可以使用相同的函数来允许对十进制值进行轻微修改。看下面两个你能理解的例子。对于仅允许2个十进制值-仅允许数字:实际写入的regx表示允许一个点,对于仅允许一个数字,不需要将其替换为空//替换多个点输入数据。替换(/[^0-9.]/g',)。替换('.','x')->它将从我们用x替换第一个点的数据中提取数字和点。替换(/\./g',)->它将删除其他点。替换('x','.')->再次将x替换为点欢迎使用SO!请解释一下你的代码是做什么的,否则有同样问题的用户将无法了解你的解决方案。事实上,我编写了一个函数来限制2位小数的值,我是从上面推导出来的。我们可以使用相同的函数来允许对十进制值进行轻微修改。看下面两个你能理解的例子。对于仅允许2个十进制值-仅允许数字:实际写入的regx表示允许一个点,对于仅允许一个数字,不需要将其替换为空//替换多个点输入数据。替换(/[^0-9.]/g',)。替换('.','x')->它将从我们用x替换第一个点的数据中提取数字和点。替换(/\./g',)->它将删除其他点。替换('x','.')->再次将x替换为点
<input id="example" type="text" [(ngModel)]="example" (keypress)="OnlyNumbers($event)" />
public OnlyNumbers($event) {
let regex: RegExp = new RegExp(/^[0-9]{1,}$/g);
let specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowRight','ArrowLeft'];enter code here
if (specialKeys.indexOf($event.key) !== -1) {
  return;
} else {
  if (regex.test($event.key)) {
    return true;
  } else {
    return false;
  }
}
}
<input type="text" (input)="onTextboxChangeValidate($event)">
onTextboxChangeValidate(event: Event)
{
var inputData = (<HTMLInputElement>event.target).value;

//replace more than one dot
var extractedFte = inputData.replace(/[^0-9.]/g, '').replace('.', '')
  .replace(/\./g, '').replace('x', '.');

//Extract nuber Values
extractedFte = extractedFte.replace(/^(\d+)\d*$/, "$1");

//Reasign to same control
(<HTMLInputElement>event.target).value = extractedFte; 
}