绑定 angular 日期选择器和时间选择器
Bind angular datepicker and timepicker
我想绑定angular时间选择器和日期选择器。我正在使用 Angular bootstrap library
根据 timepicker 的文档,它需要 new Date
对象作为最小值和最大值。
如果我简单地这样设置
var d = new Date();
d.setHours( 2 );
d.setMinutes( 0 );
$scope.minTime = d;
var d = new Date();
d.setHours( 11 );
d.setMinutes( 0 );
$scope.maxTime = d;
<uib-timepicker ng-model="mytime" min="min" max="max" show-meridian="false" min="minTime" max="maxTime"></uib-timepicker>
这仅适用于 今天 因为 new Date()
对象。
我希望它能在我 select 的任何一天工作。目前timepicker没有按要求限制时间。另外,有时timepicker box borders会变成红色(可能是验证错误),但没有具体说明错误是什么。
为了根据选择的日期初始化timepicker
,将dateChange
函数替换为:
$scope.dateChange = function() {
var selectedDate = $scope.dt;
var min = new Date(selectedDate.getTime());
min.setHours(2);
min.setMinutes(0);
$scope.min = min;
var max = new Date(selectedDate.getTime());
max.setHours(4);
max.setMinutes(0);
$scope.max = max;
}
工作示例
angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('DatepickerDemoCtrl', function($scope) {
$scope.format = 'yyyy/MM/dd';
$scope.min = null;
$scope.max = null;
$scope.initTimePicker = function(selectedDate) {
var min = new Date(selectedDate.getTime());
min.setHours(2);
min.setMinutes(0);
$scope.min = min;
var max = new Date(selectedDate.getTime());
max.setHours(4);
max.setMinutes(0);
$scope.max = max;
}
$scope.init = function() {
$scope.dt = new Date();
$scope.initTimePicker($scope.dt);
};
$scope.init();
$scope.clear = function() {
$scope.dt = null;
};
$scope.open = function() {
$scope.popup.opened = true;
};
$scope.popup = {
opened: false
};
$scope.dateChange = function() {
$scope.initTimePicker($scope.dt);
}
});
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.2.4.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<div ng-app="ui.bootstrap.demo" ng-controller="DatepickerDemoCtrl">
<div class="row">
<div class="col-md-6">
<p class="input-group">
<input type="text" class="form-control" uib-datepicker-popup="{{format}}" ng-model="dt" is-open="popup.opened" datepicker-options="dateOptions"
ng-required="true" close-text="Close" ng-change="dateChange()" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open()"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
</div>
</div>
<uib-timepicker ng-model="dt" hour-step="1" minute-step="15" name="sTime" show-meridian="true" min="min" max="max">
</uib-timepicker>
<pre class="alert alert-info">Time is: {{dt | date:'M/d/yyyy HH:mm' }}</pre>
</div>
我想绑定angular时间选择器和日期选择器。我正在使用 Angular bootstrap library
根据 timepicker 的文档,它需要 new Date
对象作为最小值和最大值。
如果我简单地这样设置
var d = new Date();
d.setHours( 2 );
d.setMinutes( 0 );
$scope.minTime = d;
var d = new Date();
d.setHours( 11 );
d.setMinutes( 0 );
$scope.maxTime = d;
<uib-timepicker ng-model="mytime" min="min" max="max" show-meridian="false" min="minTime" max="maxTime"></uib-timepicker>
这仅适用于 今天 因为 new Date()
对象。
我希望它能在我 select 的任何一天工作。目前timepicker没有按要求限制时间。另外,有时timepicker box borders会变成红色(可能是验证错误),但没有具体说明错误是什么。
为了根据选择的日期初始化timepicker
,将dateChange
函数替换为:
$scope.dateChange = function() {
var selectedDate = $scope.dt;
var min = new Date(selectedDate.getTime());
min.setHours(2);
min.setMinutes(0);
$scope.min = min;
var max = new Date(selectedDate.getTime());
max.setHours(4);
max.setMinutes(0);
$scope.max = max;
}
工作示例
angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('DatepickerDemoCtrl', function($scope) {
$scope.format = 'yyyy/MM/dd';
$scope.min = null;
$scope.max = null;
$scope.initTimePicker = function(selectedDate) {
var min = new Date(selectedDate.getTime());
min.setHours(2);
min.setMinutes(0);
$scope.min = min;
var max = new Date(selectedDate.getTime());
max.setHours(4);
max.setMinutes(0);
$scope.max = max;
}
$scope.init = function() {
$scope.dt = new Date();
$scope.initTimePicker($scope.dt);
};
$scope.init();
$scope.clear = function() {
$scope.dt = null;
};
$scope.open = function() {
$scope.popup.opened = true;
};
$scope.popup = {
opened: false
};
$scope.dateChange = function() {
$scope.initTimePicker($scope.dt);
}
});
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.2.4.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<div ng-app="ui.bootstrap.demo" ng-controller="DatepickerDemoCtrl">
<div class="row">
<div class="col-md-6">
<p class="input-group">
<input type="text" class="form-control" uib-datepicker-popup="{{format}}" ng-model="dt" is-open="popup.opened" datepicker-options="dateOptions"
ng-required="true" close-text="Close" ng-change="dateChange()" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open()"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
</div>
</div>
<uib-timepicker ng-model="dt" hour-step="1" minute-step="15" name="sTime" show-meridian="true" min="min" max="max">
</uib-timepicker>
<pre class="alert alert-info">Time is: {{dt | date:'M/d/yyyy HH:mm' }}</pre>
</div>