Как мне сбросить значения календаря datepicker? .. Ограничения минимальной и максимальной даты?
Проблема в том, что когда я очищаю даты (удаляя значения текстового поля), все еще применяются предыдущие ограничения даты.
Перебирал документацию и ничего не вышло как решение. Я также не смог найти быстрое исправление в поиске SO / google
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. Вы не найдете его в общедоступном API на веб-сайте jQuery UI, но он работает как шарм.
источник
this
именно находится внутри _clearDates ()Ты пробовал:
$('selector').datepicker('setDate', null);
Это должно работать в соответствии с документацией API
источник
('setDate', null)
меня есть формат, который я хочу (ДД / ММ / ГГГГ) , но когда я использую его, у меня есть ММ / ДД / ГГГГ ... единственная разница в использовании('setDate', null)
, есть идеи, почему?вам просто нужно снова установить для параметров значение null:
dates.datepicker( "option" , { minDate: null, maxDate: null} );
Я изменил ваш jsfiddle: http://jsfiddle.net/tF5MH/9/
источник
date.datepicker( "option" , {setDate: null, minDate: null, maxDate: null} );
$('.date').datepicker('setDate', null);
источник
Попробуйте изменить код очистки на:
$('#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 ); });
источник
Попробуйте это, это добавит кнопку очистки в календаре JQuery, которая очистит дату.
$("#DateField").datepicker({ showButtonPanel: true, closeText: 'Clear', onClose: function (dateText, inst) { if ($(window.event.srcElement).hasClass('ui-datepicker-close')) { document.getElementById(this.id).value = ''; } } });
источник
document.getElementById(this.id).value = '';
на$(this).val('').change();
делает его еще лучше, потому что тогда также будут вызваны все установленные обработчики изменений.Сбросьте атрибуты максимальной даты на вашем datepicker, когда вы нажмете очистить.
С веб-сайта 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') - идентификатор входного элемента.
источник
.val('')
очистит поля ввода, но не снимет ограничения для выбора даты в календарях.Модифицированная версия решения Лениэля Макафери для учета того, что клавиша backspace является ярлыком «назад на страницу» в 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', };
Итак, кнопка "Готово" по умолчанию будет иметь "Очистить". текст .
Теперь внутри datepicker.js найдите внутреннюю функцию _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 () {...} ...
И измените функцию скрытия, чтобы она выглядела так:
... hide: function () { $.datepicker._clearDate(id); $.datepicker._hideDatepicker(); }, ...
источник
Я использую этот код для очистки поля и всех махинаций. Мне нужно пустое поле для моего варианта использования
jQuery.datepicker._clearDate(window.firstDay); window.firstDay.datepicker('setDate',null); window.firstDay[0].value = '';
У
.val('')
меня почему- то не работает. Но в обход jQuery это удалось. На мой взгляд, недостаток в том, что нет опции .datepicker ('clear').источник
Мой способ решить эту проблему
Измените var 'controls' на ui.js
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
И перед функцией шоу
$(".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(''); } } });
источник
В Firefox это работает для меня в форме (программно), где элемент управления datepicker по умолчанию отключен:
$("#txtDat2").prop('disabled', false); //temporary enable controls<br> $("#txtDat2").val("YYYY-MM-DD"); //reset date to dd.mm.yyyyy $("#txtDat2").prop('disabled', true); //back to default state
источник
Пожалуйста, попробуйте это решение, оно будет работать правильно, как я пытался
$('selector').datepicker('setStartDate', 0); $('selector').datepicker('setEndDate', 0); $('selector').datepicker('update');
источник