<Input type='date'> 但只有某个日期

问题描述

我想创建一个带有日期输入的表单,但用户不能选择所有日期: 例如,

如果用户在 5 月 24 日星期一(第 0 天)填写表单,他可以选择一个

Friday 28 May (day 4)
Saturday 29 May (day 5)
Friday 3 July (day 11)
Saturday 4 July (day 12)
Friday 10 July (day 18)
Saturday 11 July (day 19)

但如果他在 5 月 27 日星期四(第 0 天)填写,他可以选择一个

Friday 28 May (day 1)
Saturday 29 May (day 2)
Friday 3 July (day 8)
Saturday 4 July (day 9)
Friday 10 July (day 15)
Saturday 11 July (day 15)

在任何情况下,用户都可以选择本周的周五和周六、下一个和下一个

我真的不知道这是否可能,或者我是否需要使用选择,以及我是否需要使用选择?

感谢您的阅读,我希望我说的很清楚,对不起我的英语

解决方法

“在所有情况下,用户都可以选择本周的周五和周六, 下一个,另一个下一个。”

这可以使用日期选择器本身来实现。

$("#dp").datepicker({
  beforeShowDay: function(date){ return [date.getDay() == 5 || date.getDay() == 6,""]},minDate: 0,maxDate: "+3w"
});

为您工作 jsfiddle:https://jsfiddle.net/sanjeevsarkar/zyve78wu/8/

如果您想要自定义日期:

您可以使用 jQuery Datepicker beforeShowDay 并在使用 PHP 加载页面时传递可用日期。

var available_formatted_dates_list = ['28-05-2021','29-05-2021','04-06-2021','05-06-2021','11-06-2021','12-06-2021'];

$(function() {
  $("input[id$=DateText]").datepicker({
    changeMonth: true,changeYear: true,dateFormat: "dd-mm-yy",beforeShowDay: check_available_date
  });
});

function check_available_date(date) {
  var formatted_date = '',ret = [true,"",""];
  if (date instanceof Date) {
    formatted_date = $.datepicker.formatDate('dd-mm-yy',date);
  } else { formatted_date = '' + date; }
  if (-1 === available_formatted_dates_list.indexOf(formatted_date)) {
    ret[0] = false;
    ret[1] = "date-disabled";
    ret[2] = "Date not available";
  }
  return ret;
}

这是给你的小提琴:https://jsfiddle.net/sanjeevsarkar/t8namfq1/2/

注意:

哪里有问题,哪里就有解决方案。

请注意,一旦用户发布表单,如果可能的话,也要对日期进行后端验证,因为可以从以下位置操作 UI 表单数据浏览器。

快乐编码! :)

,
$today = date('Y-m-d');
  $todayDay =  date("l");
  if($todayDay == 'Monday'){
    $jour1 = date('Y-m-d',strtotime($today. ' + 4 days'));
    $jour2 = date('Y-m-d',strtotime($today. ' + 5 days'));
    $jour3 = date('Y-m-d',strtotime($today. ' + 11 days'));
    $jour4 = date('Y-m-d',strtotime($today. ' + 12 days'));
    $jour5 = date('Y-m-d',strtotime($today. ' + 18 days'));
    $jour6 = date('Y-m-d',strtotime($today. ' + 19 days'));
  }
  if($todayDay == 'Tuesday'){
    $jour1 = date('Y-m-d',strtotime($today. ' + 3 days'));
    $jour2 = date('Y-m-d',strtotime($today. ' + 4 days'));
    $jour3 = date('Y-m-d',strtotime($today. ' + 10 days'));
    $jour4 = date('Y-m-d',strtotime($today. ' + 11 days'));
    $jour5 = date('Y-m-d',strtotime($today. ' + 17 days'));
    $jour6 = date('Y-m-d',strtotime($today. ' + 18 days'));
  }

我做的,它不漂亮,但很好用