【问题标题】:Splitting jQuery datepicker into seperate Day / Month / Year fields将 jQuery 日期选择器拆分为单独的日/月/年字段
【发布时间】:2015-01-27 17:46:31
【问题描述】:

所以我正在使用 Wordpress 的 Contact Form 7 插件,我相信它利用 jQuery datepicker 来生成它的日期字段(如果我错了,请纠正我)。

我的问题是,而不是单个字段,我可以将用户的输入框拆分为三个单独的元素(日/月/年),同时仍然使用日期选择器来检查日期是否存在(以防止用户例如选择 2 月 31 日)?

基本的 JSFiddle,希望能解释我的意思...http://jsfiddle.net/lustre/n908n2g3/1/

基本的日期选择器代码,因为我被告知要包含代码 D:

$("#datepicker").datepicker();

只是在寻找任何建议/帮助 :) 这样的事情可能吗?如果我必须手动将其拆分为三个下拉字段,是否需要应用新的 JavaScript?

【问题讨论】:

  • 这有点违背日期选择器的目的。您可以根据“月”字段中选择的月份,非常轻松地调整“天”字段中的天数。 AFAIK,日期选择器的出现是为了帮助解决将三个日期字段合并为一个而导致的数据输入问题。将三个字段组合成一个日期字段只是 IMO 更好的用户体验。
  • 是的,我可以这样做,但我担心的是闰年......有没有简单的数学来计算一年是否是闰年?

标签: javascript jquery wordpress jquery-ui datepicker


【解决方案1】:

这对我有用。日期选择器有一个事件处理程序(onSelect),一旦选择日期就会被调用:

$("#datepicker").datepicker({
    onSelect: function(date) {

            date = date.split(/\//g);

            var day = date[1];
            var month = date[0];
            var year = date[2];

            $('#day').val(day);
            $('#month').val(month);
            $('#year').val(year);

        }   
});

此外,我会将三个输入字段设为只读。所以用户不能修改 datepicker 插入的值。

<p><input id="day" type="text" placeholder="Day" readonly/>
<input id="month" type="text" placeholder="Month" readonly/>
<input id="year" type="text" placeholder="Year" readonly/></p>

另一种方法是为每个元素添加一个日期选择器:

attachDatepickerToFieldById("#day");
attachDatepickerToFieldById("#month");
attachDatepickerToFieldById("#year");

function attachDatepickerToFieldById(id){

    $(id).datepicker({
        onSelect: function(date) {

            date = date.split(/\//g);

            var day = date[1];
            var month = date[0];
            var year = date[2];

            $('#day').val(day);
            $('#month').val(month);
            $('#year').val(year);

        }   
    });

}

现在,当您单击一个字段时,会出现一个日期选择器,并在选择一个日期后相应地设置所有三个字段。在这种情况下,您可以删除原始输入字段。

【讨论】:

  • 虽然我看到它在做什么,但这并不是我的目标......理想情况下,我根本不想使用单个 datepicker 字段,只需要三个下拉菜单要从中选择的用户。虽然我可以使用 jQuery 根据月份更改天数(因此,如果他们选择 2 月,他们只能选择 1-28 天),但我担心的是闰年。
猜你喜欢
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多