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

jQuery UI Datepicker无法获取选中日期值,求排查原因

问题分析与解决

嘿,我来帮你拆解下为什么你的代码里console.log(date_choisie)没有输出——核心问题出在变量赋值的时机上:

问题根源

  • 你在初始化jQuery UI Datepicker的同一行就调用了.val(),这时候输入框#calendrier还没有任何值(哪怕你后面调用了setDate,但这个赋值操作是在setDate执行前完成的,变量已经固定为空了)。
  • setDate是在初始化之后才执行的,但date_choisie只在初始化时取了一次输入框的值,后续的日期变更不会自动同步到这个变量里。

修复方案

方案1:获取默认设置后的日期

如果只是想拿到setDate设置的默认日期,只需要把变量赋值的步骤放到setDate之后:

$( function() {
  // 先初始化Datepicker
  $("#calendrier").datepicker({ dateFormat: "yy-mm-dd" });
  // 设置默认日期
  $( "#calendrier" ).datepicker('setDate', new Date());
  // 现在再获取输入框的值
  var date_choisie = $("#calendrier").val();
  console.log(date_choisie);
} );

方案2:实时同步用户选中的日期

如果需要在用户手动选择日期时也更新这个变量,可以利用Datepicker的onSelect回调函数:

$( function() {
  var date_choisie;
  
  $("#calendrier").datepicker({
    dateFormat: "yy-mm-dd",
    // 用户选中日期时触发的回调
    onSelect: function(selectedDate) {
      date_choisie = selectedDate;
      console.log("用户选中的日期:", date_choisie);
    }
  });
  
  // 设置默认日期并同步到变量
  $( "#calendrier" ).datepicker('setDate', new Date());
  date_choisie = $("#calendrier").val();
  console.log("默认日期:", date_choisie);
} );

这样不管是默认设置的日期,还是用户手动选择的日期,都能正确赋值到date_choisie变量里啦。

内容的提问来源于stack exchange,提问作者Bob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:22:34