【问题标题】:jQuery UI datepicker reset datejQuery UI datepicker 重置日期
【发布时间】:2013-05-29 12:06:33
【问题描述】:

我在输入字段中有一个datepicker,我第一次打开它时的默认日期是今天的日期,这就是我想要的。
但是,当我选择一个日期并清除输入字段时,datepicker 上仍然有选定的日期,这是我不想要的

有谁知道为什么会发生这种情况以及如何防止这种行为?

【问题讨论】:

  • 请发布您的代码。
  • 选择日期并清除输入字段是什么意思?是您直接清除输入字段而不在该字段上调用 ​​datepicker 并清除它吗?
  • 使用 $.datepicker._clearDate(this);在这里,这是您的输入字段
  • 你会读过 datepicker 的手册吗?如果没有检查jqueryui.com/datepicker

标签: javascript jquery user-interface datepicker


【解决方案1】:

重置 Datepicker 小部件日期的正确方法如下:

$.datepicker._clearDate('#input_field_goes_here');

或者像这样:

$('#input_field_goes_here').datepicker('setDate', null);

哪个最适合你。

【讨论】:

  • 第二个是更官方的答案。使用私有 API 是个坏主意。
  • 同意。第二个是最好的。
【解决方案2】:

http://codepen.io/alexgill/pen/yOQrwV

$(SELECTOR).datepicker('setDate', null);

【讨论】:

  • 没错,_ API 始终是私有的
  • 很好,但年份不会重置
  • 所以我最终做了 $(SELECTOR).datepicker('setDate', new Date());然后 $(SELECTOR).datepicker('setDate', null);也可以重置年份
【解决方案3】:

日历中的清除按钮。

 $("#txtCalendar").datepicker({
        showButtonPanel: true,
        closeText: 'Clear',
        onClose: function (dateText, obj) {
            if ($(window.event.srcElement).hasClass('ui-datepicker-close'))
                $("#txtCalendar").val('');
        }
    });

【讨论】:

  • 很好但改变了 $("#txtCalendar").val('');到 $(this).val('');多个实例
  • @BarryDowd 这看起来很聪明。但是我得到window.event is undefined(至少在Firefox中)。任何解决方法?谢谢!
  • @SeaBass 该示例使用了已弃用的引用 (window.event.srcElement),为了使其正常工作,您需要将其替换为 event.target。参考:developer.mozilla.org/en-US/docs/Web/API/Event/srcElement
【解决方案4】:

只需添加此代码

}).keyup(function(e) {
    if(e.keyCode == 8 || e.keyCode == 46) {
        $.datepicker._clearDate(this);
    }
});

即使字段处于只读模式,您也可以使用退格键清除字段。 Source

【讨论】:

  • 我必须使用$( dateInput ).attr( "value", null ) 而不是_clearDate
【解决方案5】:

要真正重置所有内容,包括在日期选择器弹出窗口中选择的年份,我必须执行以下操作:

$(SELECTOR).datepicker('setDate', new Date());
$(SELECTOR).datepicker('setDate', null);

仅执行最后一行会导致之前选择的年份显示在日期选择器中

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    相关资源
    最近更新 更多