一尘不染

如何将输入限制为仅接受数字?

angularjs

我在AngularJS中使用ngChange来触发自定义函数,该函数将删除用户添加到输入中的所有字母。

<input type="text" name="inputName" data-ng-change="numbersOnly()"/>

问题是我需要定位触发的输入,numbersOnly()以便删除输入的字母。我已经在Google上寻找了很长时间,并且对此一无所获。

我能做什么?


阅读 195

收藏
2020-07-04

共1个答案

一尘不染

简单的方法 ,如果适用于您的用例,请使用type =“
number”

<input type="number" ng-model="myText" name="inputName">

另一种简单的方法: ng-
pattern
也可用于定义正则表达式,以限制字段中允许的内容。另请参阅有关表单“食谱”页面

骇人听闻的? 方式,$ watch您的控制器中的ng模型:

<input type="text"  ng-model="myText" name="inputName">

控制器:

$scope.$watch('myText', function() {
   // put numbersOnly() logic here, e.g.:
   if ($scope.myText  ... regex to look for ... ) {
      // strip out the non-numbers
   }
})

最好的方法是 ,在指令中使用$ parser。我不会重复@pkozlowski.opensource提供的已经很好的答案,

以上所有解决方案都涉及使用ng-model,这使查找this不必要。

使用ng-change会引起问题。请参阅AngularJS-重置$scope.value不会更改模板中的值(随机行为)

2020-07-04