Javascript 仅angularjs日期输入

Javascript 仅angularjs日期输入,javascript,angularjs,date,Javascript,Angularjs,Date,我正在尝试验证日期(dd/mm/yyy)的输入,如果不是日期,则不允许输入-例如字符串或任何内容 下面是我的代码,但不起作用-意味着允许用户输入任何内容 angular.module('app') .directive('onlyDates', function () { return { require: 'ngModel', restrict: 'A', link: function (scope, element, attr, ctr

我正在尝试验证日期(dd/mm/yyy)的输入,如果不是日期,则不允许输入-例如字符串或任何内容

下面是我的代码,但不起作用-意味着允许用户输入任何内容

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);
        }
    };
});


您可以尝试使用
ng change
和一些功能来检查“键入时”输入的内容是否与模式匹配,如果不匹配,则删除最后输入的字符

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


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

$scope.TextBoxChangedCheck=函数(){
////在此处输入文本验证
};

use可以使用ng模式允许用户输入文本,然后进行验证,但我想阻止用户输入任何随机文本,这可能有助于复制(和许多其他问题)?在用户输入值时修改值对用户不友好。让他们完成,然后检查。例如,如果他们输入了错误的字符,然后按delete键将其删除,则函数可能已经删除了输入错误的字符,因此他们删除了一个额外的字符,然后从他们认为自己在模式中的位置继续键入,这可能会导致另一个错误,等等。是的,可能不是,但不管怎样,用户体验就像只有数字字段一样