加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何覆盖角度类型=数字验证?

发布时间:2020-12-17 08:47:36 所属栏目:安全 来源:网络整理
导读:我正在撰写一份指令,以验证瑞典社会安全号码(personnummer).要在这样的输入元素上使用: input type="text" ng-model="pnr" pnrvalidator / 瑞典社会安全号码的格式为yyyymmdd-nnnn,例如19121212-1212 只要我使用type =“text”,我的指令就可以工作.但是因为
我正在撰写一份指令,以验证瑞典社会安全号码(personnummer).要在这样的输入元素上使用:
<input type="text" ng-model="pnr" pnrvalidator />

瑞典社会安全号码的格式为yyyymmdd-nnnn,例如19121212-1212

只要我使用type =“text”,我的指令就可以工作.但是因为我想在移动浏览器上使用数字键盘,
然后我改为type =“number”:

<input type="number" ng-model="pnr" pnrvalidator />

然后我的验证器只有在我的输入中没有输入破折号( – )时才有效,例如191212121212.如果我输入19121212-1212那么它不是有效数字.
并且ng-invalid ng-invalid-number类被添加到我的input元素中

当我编写指令时,我遵循了文档如何修改内置验证器https://docs.angularjs.org/guide/forms
但它似乎不适用于type = number验证,还是我错过了什么?
我使用角度1.3(和1.4).

我的指令代码:

angular.module('example').directive('pnrvalidator',function(){
return {
    require: 'ngModel',link: function(scope,elm,attrs,ctrl) {


    var validatePnr = function(inputString){
        /*
        * My validation logic here. Removed for this example
        */

    };


    ctrl.$validators.number = function(modelValue,viewValue) {
        if (ctrl.$isEmpty(modelValue)) {
          // consider empty models to be valid
          return true;
        }
        if (validatePnr(viewValue)) {
          // it is valid
          return true;
        }
        // it is invalid
        return false;
    };
    }
};
});

我的例子http://plnkr.co/edit/OFYG06YEFwKg8zrLYVN1?p=preview的一个plunker

你可以告诉html不要通过标签中的novalidate属性来验证html表单.当您在angularjs中进行验证时,您不需要再次通过HTML验证它.

http://www.w3schools.com/tags/att_form_novalidate.asp

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读