【问题标题】:HTML input date: Don't allow user to type future dates using keyboardHTML 输入日期:不允许用户使用键盘输入未来日期
【发布时间】:2019-11-14 19:56:02
【问题描述】:

如下所示,我可以使用箭头或键盘箭头轻松阻止用户写入未来日期,我还想阻止他在输入字段中写入未来日期。

我不想完全禁用键盘输入,因为它很有用

    document.getElementById("date_end").addEventListener("change", event => {
        if (event.target.value > event.target.max) {
            event.target.value = event.target.max;
        }
    });
<input type='date' name='date_end' id='date_end' max="2023-01-03" value="2020-01-01">

【问题讨论】:

  • @Josh 这不是重复的,那里的所有答案,不要阻止键盘输入设置大于今天的日期,除非我错过了答案。我不想设置最大日期,正如您从我的代码中看到的那样,我已经这样做了。我想防止键盘输入大于今天。我也不想禁用键盘输入。
  • 你有什么尝试吗?
  • @KalimahApps 我试过reddit.com/r/learnjavascript/comments/dwf26t/…,编辑了我的问题以添加sn-p,我在这里和2个子版块上问了这个问题,我尝试了我收到的任何答案。
  • @Lynob 我用你的代码的运行版本更新了你的 OP,它似乎工作正常。有什么问题?

标签: javascript jquery html


【解决方案1】:

上面的 sn-p 有效,但我最终使用了下面的 sn-p,不知道为什么,使用上面的代码更好。

	const dateToDate = date => {
		let params = date.split('-');
		params[1]--; // months are zero indexed
		return new Date(...params);
	};

	let end_date_input = document.getElementById('date_end');
	end_date_input.addEventListener('input', function(){
		if(dateToDate(this.value) > dateToDate(this.max)){
			this.value = this.max;
		}
	});
    <input type='date' name='date_end' id='date_end' max="2023-01-03" value="2020-01-01">

【讨论】:

  • 我很困惑这会发生什么变化
  • @Neal,起初我认为它改变了一些东西,然后我发现它没有做其他任何事情,但我将这个部署到所有操作中,所以我后悔了。两者都能完美运行。
  • 减一是因为不确定您为什么使用与之前代码相同的可读性差的代码。
猜你喜欢
  • 2015-03-17
  • 2020-07-08
  • 2022-11-11
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
相关资源
最近更新 更多