You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery读取表格日期赋值给datepicker出现格式不匹配报错如何解决

错误原因

  1. 字符串的toString()方法不支持传入格式参数,你的原有代码中textvalues[1].toString('yyyy-MM-ddThh:mm:ss')不会对原始字符串做任何修改,返回值还是原来的2021-06-27 17:31:05
  2. 原生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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 07:36:04