当用户更改月份时,jquery datepicker 更改年份
Posted
技术标签:
【中文标题】当用户更改月份时,jquery datepicker 更改年份【英文标题】:jquery datepicker changes year when user changes month 【发布时间】:2013-11-15 05:03:56 【问题描述】:我正在使用 jquery datepicker,但是当用户更改月份时,它会自动将年份更改为设置为最小日期的年份。 我不明白为什么会发生这种情况,而且似乎也是随机发生的。
这是我的功能:
function DatePickerShort()
$(":input[datepicker]").each(function ()
ShowPicker($(this));
$(this).bind('focus', function ()
ShowPicker($(this));
);
);
function ShowPicker(obj)
if ($(obj).is('[readonly]'))
$(obj).datepicker('destroy');
else
$(obj).datepicker('destroy');
var fecha = new Date();
$(obj).datepicker(
changeMonth: true,
changeYear: true,
minDate: new Date(2000, 08, 01),
firstDay: 1,
dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
dateFormat: 'dd/mm/yy',
monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
);
【问题讨论】:
你不是每次获得焦点时都重新创建日期选择器吗? 你想用你的代码实现什么?例如,您为什么不以$("input").datepicker();
之类的常用方式使用 datepicker?
你能创建一个 jsfiddle 吗?
【参考方案1】:
我做了很多假设,因为您确实提供了有关 html 的任何清晰度。如需更好的答案,请同时发布 html。
我认为您正在努力实现的目标: 当您专注于具有 datepicker 属性的输入元素时,您正在尝试激活 datepicker。如果它是只读元素,则不希望显示日期选择器。
你实际上在做什么: 您正在查找所有标有 datepicker 属性的输入元素并创建一个 datepicker。虽然,老实说,如果不查看您的 html,我不确定选择器是如何工作的。然后,每次输入获得焦点时,日期选择器都会被销毁,而您正在创建一个全新的选择器。当用户选择一个日期时,输入失去焦点。当日期选择器放回日期时,它会获得焦点并且新的日期选择器会再次被替换。这可能是间歇性的,具体取决于焦点事件(创建新的日期选择器)是在填充输入框之前还是之后发生的。
修复:
$("input[datepicker]:not([readonly])").datepicker(
changeMonth: true,
changeYear: true,
minDate: new Date(2000, 08, 01),
firstDay: 1,
dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
dateFormat: 'dd/mm/yy',
monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']
);
正如 JazZRo 在他的评论中所说,只需设置一次日期选择器。
我的偏好是使用类标记日期选择器并将其用作选择器。它表现更好,更清晰。如果可以,只需用类标记日期选择器,不要标记只读的。
请记住,如果 readonly 为 false,它仍然不会获取 datepicker,因为选择器只是检查 readonly 属性的存在(与 datepicker 属性相同)。有关示例,请参见此 JSfiddle: http://jsfiddle.net/DanCaveman/RBtY5/4/
【讨论】:
以上是关于当用户更改月份时,jquery datepicker 更改年份的主要内容,如果未能解决你的问题,请参考以下文章
JQuery UI datepicker onChangeMonthYear 获取 td
jquery UI datepicker 月份和年份只有 css 定位问题