2013-06-03 24 views
6

Tôi có một datepicker nằm trên trường nhập,
ngày mặc định khi lần đầu tiên mở nó là ngày hôm nay, đó là những gì tôi muốn.
Tuy nhiên khi tôi chọn một ngày và tôi rõ ràng lĩnh vực đầu vào,
datepicker vẫn có ngày đã chọn vào nó, mà tôi không muốn: p

Có ai có ý tưởng tại sao điều này xảy ra và làm thế nào tôi có thể ngăn chặn hành vi này?Ngày đặt lại date date của jquery UI

Thx,

J.

+4

đăng mã của bạn. – vlio20

+0

Bạn có ý gì khi chọn ngày và trường nhập rõ ràng? có phải là bạn đang trực tiếp xóa trường nhập liệu mà không cần gọi datepicker trên trường đó và xóa nó? – dreamweiver

+1

Sử dụng $ .datepicker._clearDate (this); ở đây đây là lĩnh vực đầu vào của bạn – Dineshkani

Trả lời

6

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

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

Đó là API riêng tư, có thể bị hỏng bất kỳ lúc nào mà không có cảnh báo ... – gamov

+0

chính xác, _ API luôn là riêng tư –

35

Cách thích hợp để thiết lập lại ngày một widget datepicker là như thế này:

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

Hoặc như thế này :

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

Tùy điều kiện nào phù hợp nhất với bạn.

+0

+1, câu trả lời tuyệt vời – SagarPPanchal

+3

Câu hỏi thứ hai chính thức hơn câu trả lời. Sử dụng API riêng tư là một ý tưởng tồi. –

+0

Đồng ý. Cái thứ hai là cái tốt nhất. – nurider

2

Nút rõ ràng trong lịch.

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

tuyệt vời nhưng đã thay đổi $ ("# txtCalendar"). Val (''); thành $ (this) .val (''); cho nhiều phiên bản –

0

Chỉ cần thêm mã này

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

Bạn có thể sử dụng phím lùi để xóa hiện trường ngay cả khi nó đã ở chế độ chỉ đọc. Source