Javascript 输入类型日期的angularjs日期格式验证
我正在尝试使用AngularJS和按照文档创建日期 带有日期验证和转换的输入。在没有 但是支持HTML5日期输入,将使用文本元素。因为 在这种情况下,文本必须以有效的ISO-8601日期格式输入 (yyyy-MM-dd),例如:2009-01-06。因为很多现代浏览器都有 由于还不支持这种输入类型,因此为 用户通过占位符或标签输入预期的输入格式 它只接受有效的ISO-8601日期格式(yyyy-MM-dd) 我尝试在Javascript 输入类型日期的angularjs日期格式验证,javascript,angularjs,date,Javascript,Angularjs,Date,我正在尝试使用AngularJS和按照文档创建日期 带有日期验证和转换的输入。在没有 但是支持HTML5日期输入,将使用文本元素。因为 在这种情况下,文本必须以有效的ISO-8601日期格式输入 (yyyy-MM-dd),例如:2009-01-06。因为很多现代浏览器都有 由于还不支持这种输入类型,因此为 用户通过占位符或标签输入预期的输入格式 它只接受有效的ISO-8601日期格式(yyyy-MM-dd) 我尝试在模式的属性中定义新的日期格式,如下代码所示: <div ng-app=""
模式的属性中定义新的日期格式,如下代码所示:
<div ng-app="">
<form name="frmSPA" novalidate>
<input type="date" placeholder="Enter SPA Date" pattern="dd/MM/yyyy" name="SPADate" ng-model="SPADate" ng-required="true" />
<span ng-show="frmSPA.SPADate.$touched && frmSPA.SPADate.$error.required">SPA Date is required</span>
<span ng-show="frmSPA.SPADate.$touched && frmSPA.SPADate.$error.date">Not a valid date</span>
</form>
</div>
SPA日期是必需的
不是有效日期
但它不起作用
那么如何将默认日期格式更改为dd/MM/yyyy
。以下是。我认为您应该编写一个特别指令,以实现真正的跨浏览器兼容…
大概是这样的:
angular
.module('MyApp', [])
.controller('MainCtrl', function ($scope, dateFilter) {
$scope.date = new Date();
})
.directive(
'dateInput',
function(dateFilter) {
return {
require: 'ngModel',
template: '<input type="date"></input>',
replace: true,
link: function(scope, elm, attrs, ngModelCtrl) {
ngModelCtrl.$formatters.unshift(function (modelValue) {
return dateFilter(modelValue, 'dd-MM-yyyy');
});
ngModelCtrl.$parsers.unshift(function(viewValue) {
return new Date(viewValue);
});
},
};
});
angular
.module('MyApp',[])
.controller('MainCtrl',函数($scope,dateFilter){
$scope.date=新日期();
})
.指令(
“dateInput”,
函数(日期过滤器){
返回{
要求:'ngModel',
模板:“”,
替换:正确,
链接:函数(范围、elm、属性、ngModelCtrl){
ngModelCtrl.$formatters.unshift(函数(modelValue)){
返回日期筛选器(modelValue“dd-MM-yyyy”);
});
ngModelCtrl.$parsers.unshift(函数(viewValue){
返回新日期(viewValue);
});
},
};
});
使用ng模式而不是模式。
还可以使用正则表达式而不是日期格式来正确验证日期
ng模式='/([0-2]?\d{1})|([3][0,1]{1}))/^[0,1]?\d{1}/([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/'
这应该行得通。使用这种ng模式也适用于闰年。适用于“MM dd YYYY”格式
(0[1-1-1-1-1-1-9[1-1-1-9[1-1-1-1[1-1[1-1[1-1-9[2-9-2-9[2-9-2-9[2-9[2-9-2-9[2-9[2-9[2-2-9][3[3[1-3[3[1-3[3-3-3[3-3-3-d \\\3-3[3-3-3-3 \3 55 5 5 5 \{{{{{{{{{}}}}}}}}}}((((((([2-5-5 5 5 5 5-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-2(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16 |[2468][048]|[3579][26])00)$/'@RayonDabre我想给出的链接是关于如何设置日期显示格式的,但是我需要文本框来接受dd/MM/yyyyy
格式我想这取决于您的系统日期的格式…不确定…@RayonDabre我正在使用dd/MM/yyyy
格式您考虑过在我的系统日期上使用吗?它有你想要的一切,还有更多