0

我有一个输入,要求输入仅为数字(我知道有一个,input type="number"但我不喜欢放在上面的微调器),所以我想我会使用 AngularJS 的 $filter('number') 并观看for上的变量$scope进行更改并相应地对其进行过滤。它工作正常,但是当有人输入超过 1000 的数字时,它会删除整个数字并重新开始。

这是一个演示问题的小提琴:http: //jsfiddle.net/xxAq2/

4

1 回答 1

1

发生这种情况是因为返回值$filter('number')("1000")是“1,000”而不是“1000”,然后 parseInt 只返回 ',' 之前的任何内容。

将您的代码更改为:

parseInt($filter('number')("1000").replace(/,/g, ""))

jsfiddle

编辑:在您放入评论的小提琴中(没有 parseInt),由于以下一系列事件,它仍然失败:

1)100变成1000,你的watch回调跳转,1000变成1000。

2) 1000 改成 1000,所以回调又跳转了,但随后又把 1000 改成了 "",因为 $filter('number')("1,000") 返回 ""

3) 对 "" 进行 1,000 次更改,导致您看到的文本框为空。

于 2013-10-25T15:19:44.947 回答