Javascript 根据条件启用日期
我正在使用angularjs应用程序。我有两个日期字段,要求用户在可用日期日历中选择日期时,应启用到期日期字段,并且用户应能够从可用日期字段中选择的日期起24天内选择日期。 例如,当用户在可用日期字段中选择日期为2017-03-02时,到期日期字段应启用,日历应仅启用2017-03-02之后的24天(即2017-03-25),并且应禁用所有日期,以便用户无法选择2017-03-25之后或2017-03-02之前的任何日期。。 请找到演示 js代码:Javascript 根据条件启用日期,javascript,angularjs,Javascript,Angularjs,我正在使用angularjs应用程序。我有两个日期字段,要求用户在可用日期日历中选择日期时,应启用到期日期字段,并且用户应能够从可用日期字段中选择的日期起24天内选择日期。 例如,当用户在可用日期字段中选择日期为2017-03-02时,到期日期字段应启用,日历应仅启用2017-03-02之后的24天(即2017-03-25),并且应禁用所有日期,以便用户无法选择2017-03-25之后或2017-03-02之前的任何日期。。 请找到演示 js代码: myApp.controller("myCon
myApp.controller("myController", ["$scope",
function($scope) {
var today = new Date();
$scope.AvailableDate = new Date();
$scope.ExpireDate = new Date();
$scope.dateFormat = 'yyyy-MM-dd';
$scope.availableDateOptions = {
formatYear: 'yy',
startingDay: 1,
minDate: "2016-03-12",
maxDate: today
};
$scope.expireDateOptions = {
formatYear: 'yy',
startingDay: 1,
minDate: today,
maxDate: "2017-06-12"
};
$scope.availableDatePopup = {
opened: false
};
$scope.expireDatePopup = {
opened: false
};
$scope.ChangeExpiryMinDate = function(availableDate) {
if (availableDate != null) {
var expiryMinDate = new Date(availableDate);
$scope.expireDateOptions.minDate = expiryMinDate;
$scope.ExpireDate = expiryMinDate;
//code to set maxDates in Expire Date field -start
var date = new Date(expiryMinDate);
var newdate = new Date(date);
newdate.setDate(newdate.getDate() + 3);
var dd = newdate.getDate();
var mm = newdate.getMonth() + 1;
var y = newdate.getFullYear();
var someFormattedDate = y + '/' + dd + '/' + mm;
$scope.expireDateOptions.maxDate = someFormattedDate;
//code to set maxDates in Expire Date field -end
}
};
$scope.ChangeExpiryMinDate();
$scope.OpenAvailableDate = function() {
$scope.availableDatePopup.opened = !$scope.availableDatePopup.opened;
};
$scope.OpenExpireDate = function() {
$scope.expireDatePopup.opened = !$scope.expireDatePopup.opened;
};
}
]);
下面是我尝试但未成功的代码
var date = new Date(expiryMinDate);
var newdate = new Date(date);
newdate.setDate(newdate.getDate() + 3);
var dd = newdate.getDate();
var mm = newdate.getMonth() + 1;
var y = newdate.getFullYear();
var someFormattedDate = y + '/' + dd + '/' + mm;
$scope.expireDateOptions.maxDate = someFormattedDate;
根据您的要求,我使用以下方法来保持minDate和maxDate设置:
$scope.ChangeExpiryMinDate = function(availableDate) {
if (availableDate != null) {
var availableDate = new Date(availableDate);
var expiryMinDate = angular.copy(availableDate);
expiryMinDate.setDate(expiryMinDate.getDate() + 23);
$scope.ExpireDate = availableDate;
$scope.expireDateOptions.minDate = availableDate;
$scope.expireDateOptions.maxDate = expiryMinDate;
} else {
delete $scope.ExpireDate;
}
};
$scope.ChangeExpiryMinDate($scope.AvailableDate);
您忘记将当前的AvailableDate传递到函数中,因此当控制器首次加载时,过期日期字段已经被限制
要禁用周末,您可以使用以下命令更新ExpiryDate选项:
$scope.expireDateOptions = {
formatYear: 'yy',
startingDay: 1,
minDate: today,
maxDate: "2017-06-12",
dateDisabled: function(data) {
var date = data.date;
var mode = data.mode;
return (mode === 'day' && ( date.getDay() === 0 || date.getDay() === 6 ));
}
};
我在这里创建了一个有效的JSFIDLE:您在FIDLE中提到的代码不起作用,我想在用户从“可用日期”字段中选择日期后启用“过期日期”字段,并且“过期日期”字段应仅显示23天,后跟用户在“可用日期”字段中选择的日期。@user2340824Thank@user2340824,但我提出的问题是错误的,我想通过排除周六和周日来展示23天,@participantjava抱歉!我把小提琴粘错了。我更新了小提琴,还发现了另一个问题。谢谢,我注意到了。除周六和周日外,我们可以启用23天吗?