2012-05-16 33 views
5

Tôi đang cố gắng lấy phạm vi ngày "từ" và "đến" để thêm ngày đó vào DB của tôi. Tôi sử dụng altFormat và altField để chụp ngày theo định dạng DB (yy-mm-dd) trong khi hiển thị định dạng ngày bình thường trong giao diện người dùng bằng cách sử dụng thành phần UI jpery Datepicker.Sử dụng altFormat và altField trong phạm vi ngày thanh công cụ jquery UI

Câu hỏi của tôi là: Làm cách nào để sử dụng điều này trong phạm vi giao diện người dùng Datepicker. Tôi có thể chỉ định altField cho từ và đến datepickers của tôi ở đâu?

http://jqueryui.com/demos/datepicker/#date-range

Mã của tôi:

var dates = $("#hotel_display_checkin_date, #hotel_display_checkout_date").datepicker({ 
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 1, 
     altFormat: "yy-mm-dd", 
     altField: "#hotel_checkin_date", 
     onSelect: function(selectedDate) { 
      var option1 = this.id == "hotel_display_checkin_date" ? "minDate" : "maxDate", 

       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
        instance.settings.dateFormat || 
        $.datepicker._defaults.dateFormat, 
        selectedDate, instance.settings), 
        options = {option1: date} 
      dates.not(this).datepicker("option", options); 
     } 
     }); 

Tôi đã thử thêm tùy chọn altField để options = {option1: Ngày}, nhưng điều đó không làm việc

Trả lời

11

vấn đề chính của bạn là bạn' đang cố gắng sử dụng cùng một ngày altField cho cả ngày nhận phòng và ngày trả phòng:

altField: '#hotel_checkin_date' 
.210

Nếu bạn ràng buộc chúng riêng rẽ:

var opts = { 
    defaultDate: "+1w", 
    changeMonth: true, 
    numberOfMonths: 1, 
    altFormat: "yy-mm-dd" 
    onSelect: function(selectedDate) { ... } 
}; 

$('#hotel_display_checkin_date').datepicker(
    $.extend({ 
     altField: '#hotel_checkin_date' 
    }, opts) 
); 
$('#hotel_display_checkout_date').datepicker(
    $.extend({ 
     altField: '#hotel_checkout_date' 
    }, opts) 
);​ 

để bạn có thể xác định riêng biệt altField s sau đó mọi thứ sẽ làm việc tốt hơn.

Bản trình diễn: http://jsfiddle.net/ambiguous/bJ8bh/1/

+0

Cảm ơn bạn đã giới thiệu jsfiddle. Tôi thực sự hiểu việc sử dụng jquery.extend() ngay bây giờ. – swordfish

+0

@swordfish: Chỉ cần nhớ rằng '$ .extend' sửa đổi đối số đầu tiên của nó, do đó bạn sẽ thấy rất nhiều' x = $ .extend ({}, ...) 'mọi thứ được sử dụng. –

Các vấn đề liên quan