Как отключить ввод даты ввода HTML при выборе прошлых дат?

#javascript #html #jquery #date

#язык JavaScript #HTML #jquery #Дата

Вопрос:

Я пытаюсь отключить прошлые даты в input type="date" . Я могу ограничить предыдущие даты в окне выбора дат. Но когда я набираю любые предыдущие даты в окне выбора даты HTML, я могу сохранять данные, даже если дата уже указана (например, я набираю 12/08/2020).

 $(document).ready(function() { //DISABLED PAST DATES IN APPOINTMENT DATE  var dateToday = new Date();  var month = dateToday.getMonth()   1;  var day = dateToday.getDate();  var year = dateToday.getFullYear();   if (month lt; 10)  month = '0'   month.toString();  if (day lt; 10)  day = '0'   day.toString();   var maxDate = year   '-'   month   '-'   day;   $('#txt-appoint_date').attr('min', maxDate); }); 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;input type="date" id="txt-appoint_date" /gt; 

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

1. Когда вы хотите проверить значение входных данных? когда форма отправлена, или когда ввод теряет фокус, или когда пользователь вводит значение,…?

2. Когда форма будет отправлена. Потому что я хочу сохранить значение даты из базы данных.

3. Просто поместите его в тег формы, он автоматически подтвердит, что значение DatePicker больше атрибута min или нет.

Ответ №1:

Вы можете отключить keyboard onkeydown event .

 $(document).ready(function() { //DISABLED PAST DATES IN APPOINTMENT DATE  var dateToday = new Date();  var month = dateToday.getMonth()   1;  var day = dateToday.getDate();  var year = dateToday.getFullYear();   if (month lt; 10)  month = '0'   month.toString();  if (day lt; 10)  day = '0'   day.toString();   var maxDate = year   '-'   month   '-'   day;   $('#txt-appoint_date').attr('min', maxDate); }); 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;input type="date" id="txt-appoint_date" onkeydown="return false"/gt; 

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

1. большое вам спасибо, это работает! lt;3