2016-03-03 109 views
0

我试图验证日期(DD/MM/YYY)输入,然后,如果它不是日期不允许进入 - 如字符串或任何angularjs日期仅输入

下面是我的代码,但不工作 - 手段让用户输入任何内容

angular.module('app') 
.directive('onlyDates', function() { 
    return { 
     require: 'ngModel', 
     restrict: 'A', 
     link: function (scope, element, attr, ctrl) { 
      function inputValue(val) { 
       if (val) { 
        var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 
        var res = reg.test(val); 
        if (!res) { 
         ctrl.$setViewValue(val); 
         ctrl.$render(); 
         return NaN; 
        } 
        return val; 
       } 
       return undefined; 
      } 
      ctrl.$parsers.push(inputValue); 
     } 
    }; 
}); 
+0

使用可以使用NG模式 –

+0

NG模式,允许用户输入文本,然后验证,但我想阻止用户输入任何随机文本 –

+0

可能帮助ühttp://codepen.io/TheLarkInn/post/angularjs-directive-labs-allowpattern-directive-fun-with-keycodes –

回答

0

你可以尝试使用ng-change和一些功能,可以检查“键入”什么你进入你的模式匹配,如果没有,删除最后输入的字符。

<input type="text" ng-model="txtValue" ng-change="TextBoxChangedCheck()"> 


$scope.TextBoxChangedCheck = function() { 
      //// enter your text validation here 
     }; 
+0

用户在输入时修改该值不方便用户使用。让他们完成,然后检查。例如。如果他们输错了一个字符,然后按删除将其删除,该功能可能已经删除了错字的字符,因此他们删除了一个额外的字符,然后继续从他们认为他们在模式中的位置打字,这可能会产生另一个错误,所以上。 – RobG

+0

是的,也许它不是,但无论如何,用户体验就像是只有数字字段 – JulioCT

相关问题