首页 > 解决方案 > 选择特定日期时显示错误(日期输入)

问题描述

我有以下输入允许用户在订单中选择日期:

<input id="datefield" name="date" type='date' required onkeydown="return false" min='2019-05-10'></input>

我已经按照 Tiffany Brown 教程进行操作,并且已经开始使用它,因此会出现以下错误:

var date = document.querySelector('[type=date]');

函数 noOrder(e){

var weekDay = new Date( e.target.value ).getUTCDay();

// Days in JS range from 0-6 where 0 is Sunday and 6 is Saturday

if( weekDay == 0){

    e.target.setCustomValidity('Unfortunately we cannot deliver cakes on Sundays, please select another day');


} else {

    e.target.setCustomValidity('');

}

}

date.addEventListener('input',noOrder);

但是当我尝试添加它以使 12 月 25 日不可用时,它完全停止工作并且没有出现错误。

这就是我正在做的事情:

var date = document.querySelector('[type=date]');

函数 noOrder(e){

var weekDay = new Date( e.target.value ).getUTCDay();
 var month = weekDay(e.target.value).getUTCMonth()+1;
 var day = weekDay(e.target.value).getUTCDate();

// Days in JS range from 0-6 where 0 is Sunday and 6 is Saturday

if( weekDay == 0){

    e.target.setCustomValidity('Unfortunately we cannot deliver cakes on Sundays, please select another day');

}else if (day == 25 && month == 12) {
 e.target.setCustomValidity('Unfortunately we cannot deliver cakes on this day, please select another day');

} else {

    e.target.setCustomValidity('');

}

}

date.addEventListener('input',noOrder);

真正让我困惑的是添加另一个变量,例如 var month = weekDay(e.target.value).getUTCMonth()+1; 整个事情停止工作

有人能帮我解决我哪里出错了吗?

已经采取了不同的方式并让它发挥作用,我现在正在做:

const validate = dateString => {
  const day = (new Date(dateString)).getDay();
  const month = (new Date(dateString)).getMonth()+1;
  const number = (new Date(dateString)).getDate();
  if (number == 25 && month == 12) {
    return false;
  }
  return true;
}

// Sets the value to '' in case of an invalid date
document.querySelector('input').onchange = evt => {
  if (!validate(evt.target.value)) {
    evt.target.value = '';
    alert("We cannot deliver cakes on this day. Please select another");

  }
}

标签: javascripthtml

解决方案


推荐阅读