首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已禁用在jQuery DateTimePicker中的下一个/上一个操作期间自动更改日期值

已禁用在jQuery DateTimePicker中的下一个/上一个操作期间自动更改日期值
EN

Stack Overflow用户
提问于 2012-11-28 00:58:51
回答 1查看 2K关注 0票数 1

我正在使用Trent Richardson为jQuery UI的datepicker开发的优秀的Datetimepicker插件。

然而,我希望解决的一个问题是,当您选择一个字段,然后在其中导航时,输入字段中的日期值会发生变化。因此,如果您选择了一个日期,然后决定导航以查看其他选项,则它会在此过程中更改日期。

例如,您可以查看示例页面右侧的here (使用下拉列表而不是滑块)。

以下是我的初始化代码:

代码语言:javascript
复制
$('input[name=valueTextField]').addClass('datepicker');

                $( ".datepicker" ).datetimepicker({
                        dateFormat: 'm/d/yy ',
                        timeText: 'Test',
                        controlType: 'select',
                        timeFormat: "h:mm TT",
                        ampm: true,
                        onChangeMonthYear: function(year, month, dpInst, tpInst) {
                            alert(dpInst);
                            alert(dpInst.dateDefined);
                            if(!tpInst.timeDefined && !dpInst.dateDefined) {
                                this.value = '';
                                dpInst.dateDefined = null;
                            }
                            if (dpInst.dateDefined) {

                            }
                        },
                        onSelect: function(date, dpInst) {
                            dpInst.dateDefined = true;
                        }

                });
                $("#ui-datepicker-div").addClass("meta_datepicker");
                $('input[name=valueTextField]').attr('readonly', 'readonly');

您可以看到一个JSFiddle here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 01:16:03

您可以在每次keyupselect之后保存以前的值,并在changeMonthYearclose期间恢复它

代码语言:javascript
复制
$( ".datepicker" ).datetimepicker({
    ...
    onSelect: function() {
        $(this).data("oldValue",this.value);
    },
    onChangeMonthYear: function(year, month, dpInst, tpInst) {
        this.value = $(this).data("oldValue");
    },
    onClose: function() {
        this.value = $(this).data("oldValue");
    }
}).keyup(function() {
    $(this).data("oldValue",this.value);
});

工作example。不是很漂亮,但能把工作做好。一些边缘情况:

  • 当你在弹出窗口中导航时,一切正常,但如果你尝试编辑文本字段,它会返回到当前月份(但不是真正的问题)。
  • 如果你用鼠标将某个日期粘贴到文本字段中,然后立即单击“下一步”或“上一步”,它将不会保留正确的值(虽然不知道一个简单的跨浏览器解决方案)。
  • 如果你更改月份,然后选择一个时间,日期也将更改为当前月份,如@所指出的。为了防止出现这种情况,可以使用自定义的controlType,但完整的实现不在本答案的讨论范围内。

更新: @streetlight指出了另一个问题--在使用“现在”按钮后,一切似乎都变得“有问题”(有时使用旧值,有时使用新值)-我得出的结论是,这在用户代码中做的工作太多了。假设实际上在导航日历时不自动更改值对可用性更好,我建议与jQuery团队一起打开RFE来提出这个选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13589221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档