Javascript AngularJS中的日期验证
我不能在angularjs内置的表单中允许将来的日期 这是我的HTML:Javascript AngularJS中的日期验证,javascript,angularjs,angularjs-validation,Javascript,Angularjs,Angularjs Validation,我不能在angularjs内置的表单中允许将来的日期 这是我的HTML: <div ngCloak ng-app="laurelMoney" ng-controller="myCtrl"> <form name="userForm"> <div class="form-group"> <input type='date' id="trandate" class="form-control" ng-model="trandate"
<div ngCloak ng-app="laurelMoney" ng-controller="myCtrl">
<form name="userForm">
<div class="form-group">
<input type='date' id="trandate" class="form-control" ng-model="trandate" required ng-class="{ 'has-error' : userForm.trandate.$error }" />
<p ng-show="userForm.trandate.$error" class="help-block">Transaction can't be in future</p>
</div>
<a href="#" class="btn btn-primary btn-sm btn-block" ng-click="submitForm()" type="submit">Add Transaction</a>
</form>
交易不能在将来进行
我的javascript是
angular.module('laurelMoney', [])
.controller('myCtrl', function($scope) {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1;
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = yyyy + '-' + mm + '-' + dd;
document.getElementById("trandate").setAttribute("max", today);
$scope.submitForm = function() {
if ($scope.userForm.$valid) {
alert('our form is amazing');
} else {
console.log("Error");
}
};
});
角度模块('laurelMoney',[])
.controller('myCtrl',函数($scope){
var today=新日期();
var dd=today.getDate();
var mm=today.getMonth()+1;
var yyyy=today.getFullYear();
如果(dd<10){
dd='0'+dd
}
如果(毫米<10){
毫米='0'+毫米
}
今天=yyyy+'-'+mm+'-'+dd;
document.getElementById(“trandate”).setAttribute(“max”,今天);
$scope.submitForm=function(){
如果($scope.userForm.$valid){
警惕(“我们的形式令人惊讶”);
}否则{
控制台日志(“错误”);
}
};
});
当日历弹出时,这工作正常。未来日期都被禁用。但我可以在日期输入框中手动将其更改为未来日期
该系统还允许提交未来的日期。这怎么办
谢谢。从你的问题中我可以理解,你只是试图抛出一条错误消息或不允许用户选择未来的日期,对吗?那么,给你: 注意事项:
Angular
版本已完全过时,因此可能无法按预期工作李>
ng斗篷
应该是ng斗篷
李>
输入中添加name属性
,以对其进行验证李>
此外,您可以使用提交表单,而不是单击ng
正如注释中所指出的,如果表单
无效
,您可以禁用按钮
,而不是在控制器
中进行此检查李>
$scope.max=new date()
并在视图中调用它李>
下面是一个完整的示例:
(函数(){
"严格使用",;
有棱角的
.module('laurelMoney',[])
.controller('myCtrl',myCtrl');
myCtrl.$inject=['$scope'];
函数myCtrl($scope){
$scope.max=新日期();
}
})();代码>
需要事务处理
交易应为有效日期
交易不能在将来进行
添加事务
这是一个很好的代码示例,但是您的ng类不是没有必要吗?非常确定当输入[date]
无效时,会将.ng invalid.ng invalid max
应用到该输入[date]
中。嗯,是的,它只是OP的plunker的一个副本。啊,没错。另外,OP,您可能应该使用ng submit='userForm.$valid&&submitForm()'
而不是在控制器中检查表单有效性。把所有东西都放在一个地方。此外,如果您正试图这样做,您可以通过执行
来阻止验证消息显示,而不是将错误记录到控制台上。@DanPantry,好消息,我更正了ngClass
部分,还使用了ng disabled
来更改按钮的状态。