angularjs 表单校验指令_Angularjs使用指令做表单校验的方法

前言

通常,使用angular做表单验证,一般都是把验证规则单独写为service,然后通过依赖注入的方式调用。在个别情况下,例如用户注册表单,需要根据用户输入给出不同提示信息,使用service略显不合适宜,所以可以采用指令的方式。

简易表单

如下为一个简易表单,有四项提示信息,依据状态呈现。校验规则为数字,大写字母,小写字母至少出现两项,通过正则配合ng-pattern能够实现相同的效果,此处仅为引入指令校验,不做深究。其中,user-validator为自定义指令。

用户名

请输入用户名

用户名不能为空

用户名不符合规则

用户名有效

校验指令

校验指令代码如下:

angular.module('shuffleApp', [])

.directive('userValidator', ['$log', function($log) {

return {

restrict: 'A',

require: 'ngModel',

link: function($scope, $element, $attrs, $ngModelCtrl) {

var verifyRule = [/^\d+$/, /^[a-z]+$/, /^[A-Z]+$/];

var verify = function(input) {

return !(verifyRule[0].test(input) ||

verifyRule[1].test(input) ||

verifyRule[2].test(input));

};

$ngModelCtrl.$parsers.push(function(input) {

var validity = verify(input);

$ngModelCtrl.$setValidity('defined', validity);

return validity ? input : false;

});

$ngModelCtrl.$formatters.push(function(input) {

var validity = verify(input);

$ngModelCtrl.$setValidity('defined', validity);

return validity ? input : false;

})

}

}

}]);

指令内容非常简单,检测是否全为数字,小写字母,大写字母,然后取反即得到校验结果。然后在$parser, $formatter内部设置校验结果即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值