日期输入框min/max设置onchange监听异常及padStart优化咨询
当然可以,padStart()完全可以替代你当前手写的条件判断补零逻辑,同时还能修复你现有代码里的逻辑漏洞:你当前的补零判断条件为from_dd < 9,当from_dd运算后等于9时,不会触发补零逻辑,最终生成的日期会出现2021-10-9这类不符合格式要求的结果。
优化后的事件监听代码如下:
proposal_from.addEventListener("change", function(){ var date = proposal_from.value.split("-"); var from_dd = Number(date[2]); // 先转数字避免字符串运算异常 var from_mm = date[1]; var from_Y = date[0]; from_dd++; // 统一用padStart补零,保证始终是两位格式 var formattedDd = String(from_dd).padStart(2, '0'); var min_to_dd = formattedDd; var min_to_mm = from_mm; var min_to_Y = from_Y; from_Y++; var max_to_dd = formattedDd; var max_to_mm = from_mm; var max_to_Y = from_Y; var minimum = min_to_Y + '-' + min_to_mm + '-' + min_to_dd; var maximum = max_to_Y + '-' + max_to_mm + '-' + max_to_dd; console.log(minimum); console.log(maximum); proposal_to.min = minimum; proposal_to.max = maximum; });
调整后无论日期运算后是1位还是2位,都会自动补前导零到两位,完全符合YYYY-MM-DD的格式要求。
内容的提问来源于stack exchange,提问作者user16936896
相关产品推荐
相关产品推荐

