如何清除/重置jQuery UI Datepicker日历上选定的date?
如何重置dateselect器日历值?最小和最大date限制?
问题是,当我清除date(通过删除文本框的值),以前的date限制仍然适用。
我一直在整理文档,并没有跳出任何解决scheme。 我也无法findSO /谷歌search的快速解决scheme
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); }); });
_.clearDate()是DatePicker对象的私有方法。 你不会在jQuery UI网站上的公共API中find它,但它像一个魅力。
我试图完成这个事情,也就是清空datepicker,以便用户input的filter可以被删除。 谷歌search了一下,我发现这段甜蜜的代码:
即使在只读字段中也可以添加清除function。 只需将下面的代码添加到你的datepicker:
}).keyup(function(e) { if(e.keyCode == 8 || e.keyCode == 46) { $.datepicker._clearDate(this); } });
人们将能够突出显示(即使只读字段),然后使用退格键或删除键来删除使用_clearDate
函数的date。
资源
你试过了吗:
$('selector').datepicker('setDate', null);
这应该根据API文档工作
你只需要再次设置选项为空:
dates.datepicker( "option" , { minDate: null, maxDate: null} );
我改变了你的jsfiddle: http : //jsfiddle.net/tF5MH/9/
尝试将清除代码更改为:
$('#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 ); });
$('.date').datepicker('setDate', null);
试试这个,这将添加清除buttonJquery日历,这将清除date。
$("#DateField").datepicker({ showButtonPanel: true, closeText: 'Clear', onClose: function (dateText, inst) { if ($(window.event.srcElement).hasClass('ui-datepicker-close')) { document.getElementById(this.id).value = ''; } } });
当您点击清除时,重置dateselect器上的最大date属性。
从jquery网站
Get or set the maxDate option, after init. //getter var maxDate = $( ".selector" ).datepicker( "option", "maxDate" ); //setter $( ".selector" ).datepicker( "option", "maxDate", '+1m +1w' );
我知道这有点太晚了,但是代码的简单和平就是为我做的:
$('#datepicker-input').val('').datepicker("refresh");
明显的答案是为我工作的那个。
$('#datepicker').val('');
$('#datepicker')是input元素的id。
Leniel Macaferi的解决scheme的一个修改版本解决了退格键在IE8中当文本字段没有焦点(这在datepicker打开的情况下就是这种情况)时是“返回”快捷键。
它也使用val()
来清除该字段,因为_clearDate(this)
不适用于我。
$("#clearDates").datepicker().keyup(function (e) { // allow delete key (46) to clear the field if (e.keyCode == 46) $(this).val(""); // backspace key (8) causes 'page back' in IE8 when text field // does not have focus, Bad IE!! if (e.keyCode == 8) e.stopPropagation(); });
我的datepicker初始化如下所示:
dateOptions = { changeYear: true, changeMonth: true, dateFormat: 'dd/mm/yy', showButtonPanel: true, closeText: 'Clear', };
所以,默认的“完成”button将具有“清除”文本。
现在,在datepicker.js里面find内部函数'_attachHandlers'它看起来像:
_attachHandlers: function (inst) { var stepMonths = this._get(inst, "stepMonths"), id = "#" + inst.id.replace(/\\\\/g, "\\"); inst.dpDiv.find("[data-handler]").map(function () { var handler = { prev: function () {...}, next: function () {...}, hide: function () { $.datepicker._hideDatepicker(); }, today: function () {...} ...
并改变隐藏function如下所示:
... hide: function () { $.datepicker._clearDate(id); $.datepicker._hideDatepicker(); }, ...
我用这个代码来清除这个字段和所有的shenannigans。 我需要一个空的领域为我的用例
jQuery.datepicker._clearDate(window.firstDay); window.firstDay.datepicker('setDate',null); window.firstDay[0].value = '';
出于某种原因.val('')
不适合我。 但绕过jQuery做到了。 在我看来,它是一个缺陷,没有.datepicker('清除')选项。
我的方法来解决这个问题
更改ui.js上的var'controls'
controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + this._get(inst, "closeText") + "</button>" + "<button type='button' class='ui-datepicker-close ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + this._get(inst, "clearText") + "</button>" : "");
然后添加一个clearText var
this.regional[""] = { // Default regional settings closeText: "Done", // Display text for close link clearText: "Clear", // Display text for close link prevText: "Prev", // Display text for previous month link
和之前显示function
$(".i_date").datepicker ( { beforeShow: function (input, inst) { setTimeout ( function () { $('.ui-datepicker-clear').bind('click', function() { $(input).val(''); }); }, 0 ); } } );
$("#datepicker").datepicker({ showButtonPanel: true, closeText: 'Clear', onClose: function () { var event = arguments.callee.caller.caller.arguments[0]; if ($(event.delegateTarget).hasClass('ui-datepicker-close')) { $(this).val(''); } } });
请尝试这个解决scheme,它会正常工作,因为我已经尝试过
$('selector').datepicker('setStartDate', 0); $('selector').datepicker('setEndDate', 0); $('selector').datepicker('update');