angularjs 指令中的 require: 'ngModel'

自定义指令中使用require:‘ngModel’ 这个选项来增强对表单的操作,如表单的验证:表单为必填项,符合什么样的验证规则。。。

 

html 

 <label><i class="mes_sign">*</i>姓名</label>
   <div class="pr">
        <input type="text" ng-model="saUserCheck.userName"   required warn-text="姓名" >
   </div>

 css

根据自己的需求写样式,如:

/*表单不符合要求:带红框*/
	.ng-invalid{
    border-width:1px!important;
    border-color: #e66a7b!important;
      }

指令

  .directive('warnText', ['$parse','$timeout', function ($parse,$timeout) {
            return {
                require: 'ngModel',
                restrict: 'A',
                compile: function () {
                    return function ($scope, element, attrs, ctrl) {
                        var ele = $(element); // 当前需要校验节点 jQuery对象
                        var errorTextEle; // 错误提示元素 jQuery对象

                        var checkFunc = function () {
                            $timeout(function (){
                                //判断
                                if (!ele.attr('errorText')) {
                                    ele.after('<div class="validation-errorText"></div>');
                                    ele.attr('errorText', true);
                                    errorTextEle = ele.next();
                                    element.on('focus', function () {
                                        errorTextEle.hide();
                                    });
                                }
                                if (ctrl.$invalid) {
                                    if (ctrl.$error.required) {
                                        errorTextEle.text('该项为必填项')
                                    } else if (ctrl.$error.minlength) {
                                        errorTextEle.text(attrs.warnText + '最小长度为' + attrs.ngMinlength)
                                    } else if (ctrl.$error.maxlength) {
                                        errorTextEle.text(attrs.warnText + '最大长度为' + attrs.ngMaxlength)
                                    } else if (ctrl.$error.email) {
                                        errorTextEle.text('请输入正确的邮箱格式')
                                    } else if (ctrl.$error.pattern) {
                                        errorTextEle.text("请输入正确的" + attrs.warnText);
                                    } else if(ctrl.$error.customerName){
                                            //表格
                                        errorTextEle.text("请输入正确的" + attrs.warnText);
                                    }
                                    errorTextEle.show()
                                } else {
                                    errorTextEle.hide()
                                }
                            },100)
                        };

                        if(ele.prop("tagName") == "INPUT" || ele.prop("tagName") == "TEXTAREA"){
                            element.on('blur', checkFunc);
                        }else if(ele.prop("tagName") == "SELECT"){
                            element.on('change', checkFunc);
                        }
                        
                        $scope.$on('$destroy',function () {
                            element.off();
                        });
                    }
                }
            }
        }])

 可以在触发指令方法的时候打印一下ngModel:

具体的是什么意思可以参考一下:https://blog.csdn.net/zpz_326/article/details/73527863

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值