jquery - 当 dateFormat 不包含日期时,日期选择器会丢失日期值

标签 jquery jquery-ui jquery-ui-datepicker

我有两个 HTML 输入元素。第一个是显示所选月份和年份的只读文本输入,第二个是保存所选日期的隐藏输入:

<input type="text" id="MonthDisplay" readonly="readonly" />
<input type="hidden" name="Month" />

目标是存储在隐藏字段中选择的实际日期,但在可见的 MonthDisplay 字段中仅显示月份和年份。

这是初始化日期选择器的代码:

$('#MonthDisplay')
    .datepicker({
        'dateFormat'  : 'MM yy',
        'changeMonth' : true,
        'changeYear'  : true,
        'yearRange'   : '2010:'+new Date().getFullYear(),
        'altField'    : "input[type=hidden][name=Month]",
        'altFormat'   : "m/d/yy"
    });

用户第一次选择日期时,一切都运行良好。显示字段和隐藏字段均设置正确。但是,当用户第二次单击显示字段时,日期选择器不会默认选择所选的月份。相反,它默认为今天的月份。我很确定会发生这种情况,因为控件无法解析日期 - 当我将 dateFormat 设置为包含日期(使用格式字符串 "dd MM yy")时,效果很好。但我不想在向用户显示的内容中包含这一天。

所以我的问题是,如何拦截日期选择器第二次使用的日期,该日期会记住所选的上个月?

或者,作为另一个问题,有没有办法让日期选择器或其他控件仅选择月份和年份而不选择日期?

最佳答案

我从 SO question 获取了示例@Muthukumar 提到“记住”所选月份(使用 jQuery .data())。 JSFiddle here

HTML:

<label for="startDate">Date :</label>
<input name="startDate" id="startDate" class="date-picker" />

JS:

$(function() {
  $('.date-picker').datepicker( {
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: 'MM yy',
    beforeShow: function(elem, inst) {
      var $this = $(this);
      // set the datepicker date
      $this.datepicker('option', 'defaultDate', $this.data('date'));
      // set the input date
      $this.datepicker('setDate', $this.data('date'));
    },
    onClose: function(dateText, inst) { 
      var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
      var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
      var date = new Date(year, month, 2);
      $(this).datepicker('setDate', date)
             .data('date', date); // remember the selected date
    }
  });
});

但是,@CharlieKilian,我无法让您的代码与只读输入一起工作。我将你的代码和 html(已注释)放入 fiddle 中,这样你就可以根据需要使用它。

关于jquery - 当 dateFormat 不包含日期时,日期选择器会丢失日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14527751/

相关文章:

javascript - 如何将 ng-model 值捕获到可排序选项中 [ui-sortable]

javascript - jQuery 中 scrollTop/transform CSS 效果的正确语法?

javascript - jQuery UI 选项卡激活事件无法正常运行

javascript - 单击图标时不会弹出 Zebra Datepicker UI (Internet Explorer 9)

javascript - JQuery 从 datepicker 获取可用日期对象列表

jquery - 使用 jquery 检测浏览器中的上下文菜单粘贴

javascript - 使用绝对图像位置

javascript - 设置日期选择器的值?

Jquery 在 div 外部点击时自动提交

javascript - IE10 上的 Jquery 问题