Ng-minlength无法使用自定义验证

时间:2014-09-26 12:06:12

标签: javascript angularjs forms validation angularjs-directive

我正在使用angularJS,我试图做一个表单,用户输入他的用户名和应用程序验证它是否可用于数据库且其长度在5/10字符之间。< / p>

<input type="text" name="uname" ng-model="user.uname"
ng-minlength="5" ng-maxlength="10" uniqueusername required/>

Uniqueusername是一个检查用户名是否可用的指令:

app.directive('uniqueusername', function($http){
return{
    require : 'ngModel',
    restrict : 'A',
    link : function(scope,elem,attrs,ctrl){
        ctrl.$parsers.unshift(function(value) {
            $http.get('/api/check'+value).success(function(data,status){
                if(data.available=='true'){
                    ctrl.$setValidity('unique',true);
                }
                else{
                    ctrl.$setValidity('unique',false);
.........................................................................

当我输入少于5个字符的用户名时,有效。这不应该发生。 如果我删除了用户输入的唯一用户名,那么它可以正常工作。

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

你必须从解析器函数返回一个值:

app.directive('uniqueusername', function($http){
    return{
        require : 'ngModel',
        restrict : 'A',
        link : function(scope,elem,attrs,ctrl){
            ctrl.$parsers.unshift(function(value) {
                $http.get('/api/check'+value).success(function(data,status){
                    if(data.available=='true'){
                        ctrl.$setValidity('unique',true);
                    }
                    else{
                        ctrl.$setValidity('unique',false);
                    }
                }
                return value;
            }
        }
    });
相关问题