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
相关产品推荐
相关产品推荐

