如何使用JavaScript验证用户在文本框中选择的日期早于当前日期3年
核心报错原因
- 你从
input元素获取的dt为字符串类型,不存在Date实例的getTime()方法,直接调用该方法是代码报错的直接诱因,需要先将字符串转为Date对象:var dt = new Date(document.getElementById("dt").value) - 原有逻辑中用1095天代表3年存在闰年误差,部分场景下会出现1天的判断偏差,更严谨的实现是直接生成当前日期往前推3年的基准日期,直接和用户选择的日期比较即可。
修正后的完整实现
function run() { // 转换用户输入的日期字符串为Date对象 const userSelectedDate = new Date(document.getElementById("dt").value); // 校验日期合法性,避免无效输入导致逻辑异常 if (isNaN(userSelectedDate.getTime())) { alert("请选择有效的日期"); return; } // 生成3年前的基准日期 const threeYearsAgo = new Date(); threeYearsAgo.setFullYear(threeYearsAgo.getFullYear() - 3); // 直接比较日期大小,符合早于3年前的要求则返回正确 if (userSelectedDate < threeYearsAgo) { alert("Correct"); } else { alert("Wrong"); } }
内容的提问来源于stack exchange,提问作者Moosa Imran
相关产品推荐
相关产品推荐

