AngularJS自定义出生日期输入未显示所需错误

AngularJS自定义出生日期输入未显示所需错误,angularjs,html,Angularjs,Html,我正在制作一个没有日历视图的输入元素的出生日期类型。i、 e.用户通过键入来填写日期 代码 angular.module('myApp',[]) .directive('birthDatePicker',[function(){ 返回{ 限制:“A”, 要求:'ngModel', 范围:{ 型号:'=ngModel', }, 链接:功能(范围、元素、属性、模型){ //设置光标位置 变量setCursorPosition=函数(位置){ if(元素[0]。设置选择范围){ 元素[0]。焦点()

我正在制作一个没有日历视图的输入元素的出生日期类型。i、 e.用户通过键入来填写日期

代码

angular.module('myApp',[])
.directive('birthDatePicker',[function(){
返回{
限制:“A”,
要求:'ngModel',
范围:{
型号:'=ngModel',
},
链接:功能(范围、元素、属性、模型){
//设置光标位置
变量setCursorPosition=函数(位置){
if(元素[0]。设置选择范围){
元素[0]。焦点();
元素[0]。设置选择范围(位置,位置);
}else if(元素[0].createTextRange){
变量范围=元素[0]。createTextRange();
范围。塌陷(真);
range.moveEnd('字符',位置);
range.moveStart('character',pos);
range.select();
}
};
//重置验证错误
var resetErrors=函数(){
ngModel.$setValidity('模式',真);
};
如果(!ngModel)返回;
变量d1、d2、m1、m2、y1、y2、y3、y4、游标、日期字符串、parsedDate;
ngModel.$parsers.unshift(函数(inputValue){
var digits=inputValue.split(“”).filter(函数){return(!isNaN(s)&&s!='';});
d1=数字[0]?数字[0]:'d';
d2=数字[1]?数字[1]:'d';
m1=数字[2]?数字[2]:'m';
m2=数字[3]?数字[3]:'m';
y1=数字[4]?数字[4]:“y”;
y2=数字[5]?数字[5]:“y”;
y3=数字[6]?数字[6]:“y”;
y4=数字[7]?数字[7]:“y”;
dateString=d1+d2+'/'+m1+m2+'/'+y1+y2+y3+y4;
重置错误();
如果(dateString='dd/mm/yyyy'){
ngModel.$viewValue='';
ngModel.$render();
返回ngModel.$viewValue;
}
ngModel.$viewValue=日期字符串;
ngModel.$render();
cursorPos=位数。长度+2;
如果(数字长度<3){
cursorPos=位数。长度;
}else if(数字长度<5){
cursorPos=位数。长度+1;
}
设置光标位置(光标位置);
parsedDate=新日期(ngModel.$viewValue);
//正确日期的验证
if(isNaN(parsedDate.getTime()){
ngModel.$setValidity('pattern',false);
返回ngModel.$viewValue;
}否则{
ngModel.$setValidity('模式',真);
}
返回ngModel.$viewValue;
});
}
};
}]);

需要日期

日期不正确


根据上的文档和该页上的示例,这是您应该如何使用ng消息

angular.module('myApp',[])
.directive('birthDatePicker',[function(){
返回{
限制:“A”,
要求:'ngModel',
范围:{
型号:'=ngModel',
},
链接:功能(范围、元素、属性、模型){
//设置光标位置
变量setCursorPosition=函数(位置){
if(元素[0]。设置选择范围){
元素[0]。焦点();
元素[0]。设置选择范围(位置,位置);
}else if(元素[0].createTextRange){
变量范围=元素[0]。createTextRange();
范围。塌陷(真);
range.moveEnd('字符',位置);
range.moveStart('character',pos);
range.select();
}
};
//重置验证错误
var resetErrors=函数(){
ngModel.$setValidity('模式',真);
};
如果(!ngModel)返回;
变量d1、d2、m1、m2、y1、y2、y3、y4、游标、日期字符串、parsedDate;
ngModel.$parsers.unshift(函数(inputValue){
var digits=inputValue.split(“”).filter(函数){return(!isNaN(s)&&s!='';});
d1=数字[0]?数字[0]:'d';
d2=数字[1]?数字[1]:'d';
m1=数字[2]?数字[2]:'m';
m2=数字[3]?数字[3]:'m';
y1=数字[4]?数字[4]:“y”;
y2=数字[5]?数字[5]:“y”;
y3=数字[6]?数字[6]:“y”;
y4=数字[7]?数字[7]:“y”;
dateString=d1+d2+'/'+m1+m2+'/'+y1+y2+y3+y4;
重置错误();
如果(dateString='dd/mm/yyyy'){
ngModel.$viewValue='';
ngModel.$render();
返回ngModel.$viewValue;
}
ngModel.$viewValue=日期字符串;
ngModel.$render();
cursorPos=位数。长度+2;
如果(数字长度<3){
cursorPos=位数。长度;
}else if(数字长度<5){