我在 AngularJS 中使用 ngChange 来触发一个自定义函数,该函数将删除用户添加到输入中的任何字母。
<input type="text" name="inputName" data-ng-change="numbersOnly()"/>
问题是我需要定位触发 numbersOnly()
的输入,以便我可以删除输入的字母。我在 Google 上搜索了很长时间,但找不到任何与此相关的信息。
我能做什么?
最佳答案
简单方法,使用type="number"如果它适用于您的用例:
<input type="number" ng-model="myText" name="inputName">
另一个简单的方法: ng-pattern也可以用来定义一个正则表达式来限制字段中允许的内容。另见 "cookbook" page about forms .
骇人听闻?方式,$watch Controller 中的 ng-model:
<input type="text" ng-model="myText" name="inputName">
Controller :
$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 提供的已经很好的答案,所以这里是链接:https://stackoverflow.com/a/14425022/215945
所有上述解决方案都涉及使用 ng-model,这使得查找 this
变得不必要。
使用 ng-change 会导致问题。参见 AngularJS - reset of $scope.value doesn't change value in template (random behavior)
关于javascript - 如何限制输入仅接受数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615236/