如何在jQuery UI Datepicker日历上清除/重置所选日期?

Cor*_*son 80 jquery jquery-ui jquery-ui-datepicker

如何重置日期选择器日历值?..最小和最大日期限制?

问题是当我清除日期(通过删除文本框值)时,仍然会应用先前的日期限制.

我一直在整理文档,没有任何东西作为解决方案跳出来.我也无法找到SO /谷歌搜索的快速修复

http://jsfiddle.net/CoryDanielson/tF5MH/


解:

// from & to input textboxes with datepicker enabled
var dates = $("input[id$='dpFrom'], input[id$='dpTo']");

// #clearDates is a button to clear the datepickers
$('#clearDates').on('click', function(){
    dates.attr('value', '');
    dates.each(function(){
        $.datepicker._clearDate(this);
    });
});??
Run Code Online (Sandbox Code Playgroud)

_.clearDate()是DatePicker对象的私有方法.你不会在jQuery UI的网站上的公共API中找到它,但它就像一个魅力.

Len*_*rri 83

我试图完成这件事,即清空datepicker,以便删除用户输入的过滤器.谷歌搜索了一下,我找到了这段甜蜜的代码:

您甚至可以在只读字段中添加清除功能.只需将以下代码添加到datepicker:

}).keyup(function(e) {
    if(e.keyCode == 8 || e.keyCode == 46) {
        $.datepicker._clearDate(this);
    }
});
Run Code Online (Sandbox Code Playgroud)

人们将能够突出显示(甚至只读字段)然后使用退格键或删除键来删除日期使用_clearDate功能.

资源

  • 哇.为什么不公布这个?!它也被排除在jQuery UI上的API之外....没有任何意义.----我编辑了你的帖子,以便解决方案更符合我的问题.很好找 (9认同)
  • 不,那没关系.我认为我的原始帖子中包含的解决方案和您的解决方案几乎可以帮助任何找到本页面的人.也许关于keyCode 8和46是什么或者什么`this`正好在_clearDates()里面的一些评论 (3认同)
  • 你到底把这个放在哪里? (2认同)

Dav*_*ght 57

你试过了吗:

$('selector').datepicker('setDate', null);
Run Code Online (Sandbox Code Playgroud)

这应该根据API文档工作


Sim*_*ang 21

你只需要再次将选项设置为null:

dates.datepicker( "option" , {
    minDate: null,
    maxDate: null} );
Run Code Online (Sandbox Code Playgroud)

我改变了你的jsfiddle:http://jsfiddle.net/tF5MH/9/


小智 12

$('.date').datepicker('setDate', null);
Run Code Online (Sandbox Code Playgroud)


j08*_*691 10

尝试将清算代码更改为:

$('#clearDates').on('click', function(){
    dates.attr('value', '');
    $("input[id$='dpFrom'], input[id$='dpTo']").datepicker( "option", "maxDate", null );
    $("input[id$='dpFrom'], input[id$='dpTo']").datepicker( "option", "minDate", null );
});
Run Code Online (Sandbox Code Playgroud)


soh*_*aib 7

试试这个,这将在Jquery日历上添加清除按钮,这将清除日期.

$("#DateField").datepicker({
    showButtonPanel: true,
    closeText: 'Clear',
         onClose: function (dateText, inst) {
        if ($(window.event.srcElement).hasClass('ui-datepicker-close'))
        {
            document.getElementById(this.id).value = '';
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这对Firefox不起作用,window.event未定义. (3认同)