nativeElement.如果有逗号,value为NaN



我试图将输入中的小数数设置为2。当我在其中输入逗号时,值变成NaN,所以我想要得到我的数字,而不是这个。

TS

@ViewChild('number') input;
limitNbOfDecimals() {
var regex =
this.form.number.search(/^(d+(?:[.,]d{0,2})?)$/) == 0
? true
: false;
if (regex == false) { 
// Convert the value to a number
var nb: number = +this.input.nativeElement.value;  
//set decimals at 2
this.input.nativeElement.value = nb.toFixed(2);

}
}

HTML

<input class="form-control" type="text" [(ngModel)]="form.number"
#number
name="number"
(input)="limitNbOfDecimals()"
/>

编辑我设法在数字中添加一个逗号,但如果我试图在它删除逗号后的数字后添加超过2个小数,如1,11 ->1

这不是一个完整的答案,从一个完整的解决方案的意义上说,但希望能帮助你找到一个(而且它对注释来说太长了)。

https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number)的规范说明:

该规范没有定义用户代理的用户界面要使用;鼓励用户代理供应商考虑什么可以最好地满足用户的需求. .....的用户代理法国市场可能会显示带有撇号的值在小数点前加上千位和逗号,并允许用户输入以这种方式获取一个值,在内部将其转换为提交格式如上所述。

如果你不能控制你的用户使用什么浏览器,那么确保他们能够以他们在本地设置中习惯的格式键入数字的唯一可靠方法似乎是将输入作为类型text,并在每次击键时检查他们是否键入了有效的内容(如你所定义的),并在他们提交时将其转换为十进制数。

Searching提供了执行此操作的代码,具体取决于您对数字格式的要求,尽管您可能最好从头开始编写。

要添加2个以上的十进制值,您需要告诉。tofixed(4)等。

最新更新