javascript - 在 Angular JS 1.x 中动态更改输入数字元素的验证模式的最佳方法是什么?

标签 javascript angularjs

我需要实现一个输入数字元素,它可以接受正整数值或百分比值。我添加了两个单选按钮,用户可以在其中选择他想要提供的值类型。

我的问题是:使用 Angular 1.x 实现此验证的最佳方法是什么?我为每种情况创建了两个正则表达式,但我不知道动态地重新定义模式标记。

最佳答案

这就是我的做法。下面是伪代码。

您可以在 Controller 上创建将保存当前验证模式的值。

Controller

$scope.validationPattern = 'number';

然后,当选定的单选按钮更改时,应更新此验证模式:

html

<input type="radio" value="number" ng-model="validationPattern">
<input type="radio" value="percent" ng-model="validationPattern">

然后您可以编写自定义指令,将验证器添加到 ngModel。此自定义指令可以监视 validationPattern 并删除以前的验证器并在更改时添加新的验证器。

app.directive('regexValidator', function (){ 
   return {
      require: 'ngModel',
      link: function(scope, elem, attr, ngModel) {
          $scope.$watch('validationPattern', function() {
             // remove previous regex pattern
             ngModel.$validators.splice()

             // add new regex pattern
             ngModel.$validators.push()
          });

关于javascript - 在 Angular JS 1.x 中动态更改输入数字元素的验证模式的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40038019/

相关文章:

angularjs - 当我们已经在 MEAN Stack 中学习了 Angular 时,是否还需要在 express 中学习 View 和模板引擎

javascript - Microsoft Edge 浏览器缓存中的 RESTful Angular 应用

javascript - 动态创建按钮或将数据发送到按钮

javascript - 过滤一个对象以获取另一个数组中的值

javascript - jquery treeview 单击节点或 +

javascript - AngularJS ng-repeat-start ng-repeat-end with table 和 rowspan

javascript - 用于动态字符计数的 Jasmine 单元测试用例

javascript - 为什么上传多个文件时HttpPostedFileBase列表为空?

javascript - Heroku 错误 : page was loaded over HTTPS, 但请求了不安全的脚本 'angular-route.js'

javascript - 表达 + AngularJS : app hangs on invalid url