2012-01-09 29 views
5

Tôi muốn đặt giá trị của trường datepicker và altField khi trang được tải và tôi tự hỏi liệu có một tùy chọn trong datepicker để thực hiện điều đó tự động (nghĩa là không cần phải hãy gọi setDate).Tự động đặt ngày đã chọn thành altField khi tải

Tôi biết rằng nếu tôi làm điều gì đó như thế này:

$("#date-div").datepicker({altField:"#date-input",altFormat:"yy-mm-dd", defaultDate:+7}); 

Với date-div là một div, ngày mặc định sẽ được tự động thêm vào lĩnh vực date-input khi trang được tải. Nhưng nếu tôi sử dụng trường văn bản thay vì div, nó sẽ không tự động đặt giá trị (tôi phải gọi setDate trong một dòng riêng biệt).

Tôi chỉ tò mò về điều này, tôi đã thực hiện nó gọi setDate, nhưng tôi muốn biết nếu có điều gì đó để làm điều đó tự động và nếu không phải lý do tại sao? (vì nó hoạt động khi sử dụng div để hiển thị lịch).

Trả lời

-2

Không phải 100% thanh lịch như nó cần lặp lại nhưng nó làm việc cho tôi:

$("#date-div").datepicker({altField:"#date-input",altFormat:"yy-mm-dd", defaultDate:$("#date-input").val()}); 
+0

Câu trả lời của bạn dường như không hoạt động. Có thể do sự khác biệt ở định dạng –

+1

-1, điều này chỉ hoạt động nếu 'altFormat' giống với' dateFormat' ([docs] (http://api.jqueryui.com/datepicker/#utility-formatDate)). – Stijn

+0

nếu nó hoạt động trong điều kiện bổ sung thì tại sao bạn đã downvoted nó? Tôi không hiểu là bị trừng phạt vì đưa ra một giải pháp hoạt động – Kodak

0

Đặt cược của bạn tốt nhất để thiết lập các defaultDate là để phân tích giá trị của altField với một thư viện như Moment.js, bởi vì triển khai trình duyệt cho ngày phân tích cú pháp không đáng tin cậy. Ví dụ, nếu bạn là altField lĩnh vực trước khi lĩnh vực datepicker của bạn và nó trong định dạng ISO 8601, bạn có thể làm điều này:

$(this).datepicker({ 
    altField: $(this).prev(), 
    altFormat: $.datepicker.ISO_8601, 
    defaultDate: moment($(this).prev().val()).toDate() 
}); 

Điều đó sẽ chỉ thiết lập ngày chọn mặc định khi mở lịch. Nếu bạn cũng muốn điền trường datepicker, bạn có thể thực hiện việc này sau khi đã khởi tạo datepicker bằng mã ở trên:

$(this).datepicker("setDate", moment($(this).prev().val()).toDate()); 
Các vấn đề liên quan