Отключить сегодняшнюю дату в Datetime

#javascript #html #datepicker

#javascript #HTML #выбор даты

Вопрос:

 $(document).ready(function(){
    elem = document.getElementById("date")
    var iso = new Date().toISOString();
    var minDate = iso.substring(0,iso.length-1);
    elem.value = minDate
    elem.min = minDate
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<input type="datetime-local" id="date" />
</form>  

Я использую HTML5 datetime-local <input> в качестве средства выбора даты на своей веб-странице. Как я могу отключить сегодняшнюю дату в элементе управления, чтобы пользователь мог выбирать только будущие даты?

Комментарии:

1. Можете ли вы поместить код, для которого у вас есть try so. Какое свойство календаря вы используете?

2. $(документ). готово(функция(){ элемент = document.getElementById(«дата»), переменная iso = новая дата().toISOString(); переменная minDate = iso.substring(0,iso.length-1); элемент.значение = minDate elem.min = minDate });

Ответ №1:

Пожалуйста, проверьте этот код, чтобы добавить один день в текущий день.

 <script>
$(document).ready(function(){  
 elem = document.getElementById("date")
  var d=new Date();
  d.setDate(d.getDate() 1);

  var iso = d.toISOString();
  var minDate = iso.substring(0,iso.length-1);
  elem.value = minDate
  elem.min = minDate });
</script>
  

Комментарии:

1. Ничего не отключается, и это просто позволяет щелкнуть прошлую дату

2. Можете ли вы отредактировать его вопрос и добавить используемую вами html-часть.

Ответ №2:

С помощью var minDate = iso.substring(0,iso.length-1); вы получите что-то вроде 2019-03-28T12:30:21.000 . Строка даты ISO выглядит как 2019-03-28T12:30:21.000Z , поэтому все, что вы делаете, это удаляете Z .

Измените его на .substring(0, 10) .

 $(document).ready(function() {
  var elem = $('#date');
  var iso = new Date().toISOString();
  var minDate = iso.substring(0, 10);
  elem.value = minDate;
  elem.min = minDate;
});
  

Обратите внимание, что это позволит вам выбирать даты в будущем, включая сегодняшний день. Для завтрашнего дня замените var iso = new Date().toISOString(); на var iso = new Date(new Date().valueOf() 86400000); .

86400000 является 1000ms (1 second) * 60 * 60 * 24 .

1 секунда * 60 = 1 минута
1 минута * 60 = 1 час
1 час * 24 = 1 день

Для datetime-local….

 $(document).ready(function() {
  var ONE_DAY = 86400000;
  var elem = document.getElementById('date');
  var minDate = new Date();
  minDate.setHours(0);
  minDate.setMinutes(0);
  var iso = new Date(minDate.valueOf()   ONE_DAY).toISOString();
  var minDateString = iso.substring(0, iso.length - 8);
  elem.value = minDateString;
  elem.min = minDateString;
});
  

Обратите внимание, что все еще возможно ввести недопустимые значения, поскольку дополнительная проверка зависит от реализации поля браузером. Смотрите https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local#Validation для получения дополнительной информации.

Комментарии:

1. Этот код не работает в соответствии с требованиями, пожалуйста, проверьте и обновите.