javascript - 如何限制输入仅接受数字?

标签 javascript angularjs angularjs-directive

我在 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/

相关文章:

javascript - Angular Directive(指令) : return object from collection

angularjs - 尝试访问范围时出现 Angular-bootstrap 指令问题

javascript - 为什么不相关的变量会影响另一个变量? moment.js

JavaScript:如果用户取消确认(),则文件输入 onclick 会阻止更改

javascript - 从 ionic Controller 访问 Cordova 插件

javascript - 在对象内部使用 FileReader

javascript - ng-options 删除所选选项后,如何保持 ng-model 与选择元素同步

javascript - 如何包含 AngularJS 的标签

javascript - 我如何$watch 更改 Angular 服务的属性?

javascript - 使用 Angular Directive(指令)在输入(类型=数字)中用逗号替换键盘句点