jQuery使用const替换input属性值仅得到变量名的正确实现方式问询
问题原因
- 变量被引号包裹:你在调用
attr()方法时给dateObj加了单引号,JS会将其识别为普通字符串而非变量引用,最终属性值直接存储了变量名字符串。 - 原生Date对象不符合格式要求:直接传入未格式化的Date对象,会被转为默认的完整日期字符串,无法匹配你需要的
DD/MM/YYYY格式。
正确实现代码
const dateObj = new Date(); // 日期格式化工具:输出 DD/MM/YYYY 格式 const formatToLocalDate = (date) => { // 补前导零,确保日、月都是两位 const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); // JS月份从0开始计数,需+1匹配实际月份 const year = date.getFullYear(); return `${day}/${month}/${year}`; } // 传入变量时不要加引号,直接传递格式化后的结果 jQuery("input[data-min-date='+1']").attr('data-disabled-dates', formatToLocalDate(dateObj));
扩展说明
如果需要设置多个禁用日期,只需要将多个格式化后的日期字符串用; 拼接后传入即可,示例:
const disabledDates = [ new Date(2021, 11, 24), new Date(2021, 11, 25), new Date() ].map(date => formatToLocalDate(date)).join('; '); jQuery("input[data-min-date='+1']").attr('data-disabled-dates', disabledDates);
内容的提问来源于stack exchange,提问作者Kevin Soto
相关产品推荐
相关产品推荐

