jQuery读取表格日期赋值给datepicker出现格式不匹配报错如何解决
错误原因
- 字符串的
toString()方法不支持传入格式参数,你的原有代码中textvalues[1].toString('yyyy-MM-ddThh:mm:ss')不会对原始字符串做任何修改,返回值还是原来的2021-06-27 17:31:05 - 原生
datetime-local类型输入框要求赋值的字符串必须用大写字母T分隔日期和时间,你拿到的字符串用空格分隔,不符合规范所以触发格式报错。
修复代码
由于你从表格读取的日期已经是yyyy-MM-dd HH:mm:ss的规整格式,直接把空格替换为T即可满足要求:
$(".btneditfatura").click( e =>{ let textvalues = displayDataFatura(e); let id = $("input[name*='idfatura']"); let data = $("input[name*='datafatura']"); id.val(textvalues[0]); // 替换日期字符串中的空格为T即可 data.val(textvalues[1].replace(' ', 'T')); }); function displayDataFatura(e) { let id = 0; const td = $("#tbody tr td"); let textvalues = []; for (const value of td){ if(value.dataset.id == e.target.dataset.id){ textvalues[id++] = value.textContent; } } return textvalues; }
如果后续你读取的日期格式可能变化,也可以先转成Date对象再格式化:
const rawDate = new Date(textvalues[1]); const formattedDate = [ rawDate.getFullYear(), String(rawDate.getMonth() + 1).padStart(2, '0'), String(rawDate.getDate()).padStart(2, '0') ].join('-') + 'T' + [ String(rawDate.getHours()).padStart(2, '0'), String(rawDate.getMinutes()).padStart(2, '0'), String(rawDate.getSeconds()).padStart(2, '0') ].join(':'); data.val(formattedDate);
内容的提问来源于stack exchange,提问作者Krilldop
相关产品推荐
相关产品推荐

