首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angularjs动态ng模式验证

Angularjs动态ng模式验证
EN

Stack Overflow用户
提问于 2013-09-20 00:33:37
回答 4查看 206.5K关注 0票数 84

我有一个表单,如果复选框为false,则使用ng-required指令对文本输入执行验证。如果复选框为true,则隐藏该字段,并将ng-required设置为false。

问题是我也有一个正则表达式,用于在输入上使用ng-pattern angular指令进行验证。我遇到的问题是,如果用户填写了无效的电话号码,选中复选框以停用该输入(因此不需要进一步验证),表单将不允许提交,因为根据ng模式,该表单是无效的。

我试图通过添加一个ng-change函数来解决这个问题,以将输入模型设置为null,但是,在最初将复选框设置为false时,ng-pattern和该字段仍然设置为invalid。但是,如果我取消选中该框,将所有内容设置回初始表单加载,然后再次选中该框,则该表单是有效的,并且能够提交。我不确定我错过了什么。以下是我到目前为止拥有的ng-change代码:

    var phoneNumberRegex = /^\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})$/;
    $scope.phoneNumberPattern = phoneNumberRegex;
    $scope.removeValidation = function() {
        if ($scope.cell._newUser === false) {
            $scope.request._number = '';
            $scope.phoneNumberPattern = /[0-9a-zA-Z]?/;
        } else {
            $scope.phoneNumberPattern = phoneNumberRegex;
        }
    };
EN

回答 4

Stack Overflow用户

发布于 2014-10-30 01:37:36

使用的模式:

 ng-pattern="/^\d{0,9}(\.\d{1,9})?$/"

使用的引用文件:

 '<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"></script>'

输入示例:

 <input type="number" require ng-pattern="/^\d{0,9}(\.\d{1,9})?$/"><input type="submit">
票数 5
EN

Stack Overflow用户

发布于 2015-05-08 14:07:43

 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"></script>
<input type="number" require ng-pattern="/^\d{0,9}(\.\d{1,9})?$/"><input type="submit">

票数 2
EN

Stack Overflow用户

发布于 2017-02-04 02:29:01

我前几天才碰到这个。

我所做的是在作用域上的一个变量上设置模式,并在视图中的ng-pattern中引用它。

当“复选框未选中”时,我只需在onChanged回调中将regex值设置为/.*/ (如果要取消选中)。ng-pattern选择这个变化,并说“好的,你的价值很好”。表单现在有效。我还会从字段中删除错误数据,这样您就不会有明显的错误电话#。

我在ng-required方面遇到了一些额外的问题,并做了同样的事情。就像一个护身符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18900308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档