2013-06-03 2 views
6

У меня есть датапикер, который находится на поле ввода,
Дата дефолта, когда я впервые открываю это сегодняшняя дата, и это то, что я хочу.
Однако когда я выбрать дату и очистить поле ввода,
DatePicker еще имеет выбранную дату на нем, что я не хочу: р

ли кто-нибудь имеет представление о том, почему это происходит и как я может предотвратить это поведение?jquery UI datepicker дата сброса

Thx,

J.

+4

отправьте ваш код пожалуйста. – vlio20

+0

Что вы имеете в виду, выбрав дату и поле ввода? заключается в том, что вы непосредственно очищаете поле ввода, не вызывая datepicker в этом поле и очищая его? – dreamweiver

+1

Используйте $ .datepicker._clearDate (это); здесь вот ваше поле ввода – Dineshkani

ответ

6

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

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

Это частный API, может прерываться в любое время без предупреждений ... – gamov

+0

точно, _ API всегда частный –

35

Правильный способ сбросить дату виджета Datepicker как это:

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

Или как это :

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

В зависимости от того, что лучше всего подходит для вас.

+0

+1, отличный ответ – SagarPPanchal

+3

Второй является более официальным ответ. Использование частного API - плохая идея. –

+0

Согласовано. Второй - лучший. – nurider

2

Очистить кнопку в календаре.

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

отличный, но измененный $ ("# txtCalendar"). Val (''); до $ (this) .val (''); для нескольких экземпляров –

0

Просто добавьте этот код

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

Вы можете использовать забой, чтобы очистить поле, даже если оно в режиме только для чтения. Source

Смежные вопросы