我有一个输入,要求输入仅为数字(我知道有一个,input type="number"
但我不喜欢放在上面的微调器),所以我想我会使用 AngularJS 的 $filter('number') 并观看for上的变量$scope
进行更改并相应地对其进行过滤。它工作正常,但是当有人输入超过 1000 的数字时,它会删除整个数字并重新开始。
这是一个演示问题的小提琴:http: //jsfiddle.net/xxAq2/
我有一个输入,要求输入仅为数字(我知道有一个,input type="number"
但我不喜欢放在上面的微调器),所以我想我会使用 AngularJS 的 $filter('number') 并观看for上的变量$scope
进行更改并相应地对其进行过滤。它工作正常,但是当有人输入超过 1000 的数字时,它会删除整个数字并重新开始。
这是一个演示问题的小提琴:http: //jsfiddle.net/xxAq2/
发生这种情况是因为返回值$filter('number')("1000")
是“1,000”而不是“1000”,然后 parseInt 只返回 ',' 之前的任何内容。
将您的代码更改为:
parseInt($filter('number')("1000").replace(/,/g, ""))
编辑:在您放入评论的小提琴中(没有 parseInt),由于以下一系列事件,它仍然失败:
1)100变成1000,你的watch回调跳转,1000变成1000。
2) 1000 改成 1000,所以回调又跳转了,但随后又把 1000 改成了 "",因为 $filter('number')("1,000") 返回 ""
3) 对 "" 进行 1,000 次更改,导致您看到的文本框为空。