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

date类型字段初始化异常:Voting period选择后From字段显示问题排查

问题解答

1. 选择“Voting period”后From字段显示jj - mm - aaaa的原因

<input type="date">类型的输入框要求value必须是ISO 8601标准格式(YYYY-MM-DD),如果传入的格式不匹配,浏览器会显示对应语言环境下的默认占位符(jj - mm - aaaa是法语环境的“日-月-年”占位符)。你的代码里存在两个致命错误:

  • 给日期字符串添加了多余的双引号,导致最终值是带引号的格式,完全不符合date输入的要求;
  • 日期顺序错误,使用了dd-mm-yyyy格式,而非标准的YYYY-MM-DD。

2. 其他选项能正常显示的原因

  • 选择“Question nr”时,From字段是type="text"文本输入框,这类输入框没有格式限制,可以接受任意字符串(包括9999);
  • 选择“Creation date”时,From字段用From.valueAsDate = today;直接赋值Date对象,浏览器会自动转换成标准ISO格式显示;To字段赋值的"2024-01-02"刚好是符合要求的ISO格式,因此能正常识别。

3. formattedLastSunday无法赋值给From.value的原因

核心是两个格式错误:

  1. 格式顺序不匹配:date输入框仅识别YYYY-MM-DD格式,你生成的是dd-mm-yyyy顺序的字符串,浏览器无法解析为有效日期;
  2. 多余的引号包裹:你给字符串添加了双引号,导致最终值是"dd-mm-yyyy"这种带引号的格式,不属于合法的日期字符串,因此赋值失败。

修复后的关键代码片段

else {        // (p = 3)
    From.setAttribute('type', 'date');
    From.setAttribute('size', '8');
    var now = new Date();
    var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
    var lastSunday = new Date(today.setDate(today.getDate() - today.getDay()));
    const yyyy = lastSunday.getFullYear();
    let mm = lastSunday.getMonth() + 1;     // 月份从0开始,需+1
    let dd = lastSunday.getDate();
    if (dd < 10) dd = '0' + dd;
    if (mm < 10) mm = '0' + mm;
    // 修正:使用ISO标准格式,移除多余引号
    const formattedLastSunday = `${yyyy}-${mm}-${dd}`;
    From.value = formattedLastSunday;       // 现在可正常赋值
}

内容的提问来源于stack exchange,提问作者Jo Van Damme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:47:35