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

jQuery UI Datepicker选择当前日期时触发异常问题求助

解决思路

第一步:排查基础问题

  • 打开浏览器控制台(F12),选择当前日期时查看是否有JS报错——报错会直接终止后续代码执行,这是最常见的诱因。
  • 在onSelect函数中添加console.log('选中日期:', $(this).val()),确认选择当前日期时该事件是否触发。如果没有输出,说明jQuery UI Datepicker默认对「选中当前日期」操作不触发onSelect(因为输入框值未发生变化),需要手动绑定当前日期单元格的点击事件:
$(function() {
  $("#datepicker").datepicker({
    altField: "#alternate",
    altFormat: "DD, d MM, yy",
    showOn: "button",
    buttonImage: "https://example.com/wp-content/uploads/2023/12/calendar2.png",
    buttonImageOnly: true,
    buttonText: "Select date",

    onSelect: function() {
      console.log('选中日期:', $(this).val());
      var form = document.getElementById('datepickerform');
      form.submit();
    }
  }).on('click', '.ui-state-active', function() {
    // 手动触发当前日期选中的回调逻辑
    const datepicker = $("#datepicker").datepicker();
    datepicker.datepicker('option', 'onSelect').call(datepicker[0], datepicker.datepicker('getDate'));
  });
})

第二步:检查表单提交逻辑

如果onSelect确实触发,但后续代码失效,重点排查表单提交行为:

  • 在form.submit()前添加console.log('表单即将提交'),确认当前日期时是否走到这一步。若未执行,说明表单可能存在隐性验证阻止提交,需检查表单的onsubmit事件或相关验证规则。
  • 若表单是同步提交,页面会刷新,后续JS代码只有在表单未提交成功时才会执行。你提到其他日期时alert正常,可能是当前日期选中时表单提交逻辑出现异常(比如重复提交导致页面中断),可以尝试将表单提交改为异步方式(用$.ajax)避免页面刷新,再测试alert是否正常触发。

第三步:验证altField状态

选中当前日期时,查看#alternate元素的内容是否更新。如果该元素原本就显示当前日期,Datepicker可能不会触发更新,若后续JS依赖这个元素的change事件,就会导致代码不执行。此时需要手动触发#alternate的change事件:

onSelect: function(dateText) {
  $("#alternate").val(dateText).trigger('change');
  var form = document.getElementById('datepickerform');
  form.submit();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:00:59