2010-12-13 33 views
6

Tôi đang sử dụng plugin jquery datepicker với số này timepicker addon trong hai hộp nhập, một cho ngày "Từ" và ngày thứ hai có ngày "Tới".JQuery datepicker- 2 đầu vào Từ và Tới

Khi tôi đặt cái đầu tiên, tôi muốn cái thứ hai là một ngày, kể từ ngày được lựa chọn trong lần đầu tiên, vô hiệu hóa tất cả các ngày sớm hơn so với ngày đã chọn trong "Từ" ngày

Nếu " Để "ngày được chọn đầu tiên, thì ngày" Từ "được đặt thành ngày trước ngày" Tới ".

Tôi đã tìm thấy một số ví dụ, nhưng tôi không biết làm thế nào để có được ngày với thời gian Vì vậy, Nếu tôi, ví dụ, chọn /12/2010 15:50 trong " từ" ngày, ngày trong "To" ngày được thiết lập để /12/2010 15:50 hoặc ít nhất là để /12/2010 00:00.

EDITED ***

Tôi vừa tìm thấy piece of code này mà làm việc như tôi muốn, nhưng không có addon timepicker.

$(function(){ 

    $('#dateFrom').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateTo').datepicker('option','minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
      } 
    }); 
    $('#dateTo').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateFrom').datepicker('option','maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
    }   
    }); 

}); 

Dựa trên mã trên, nó sẽ có thể thích ứng với nó, vì vậy mà tôi có thể sử dụng nó với các addon timepicker?

Cảm ơn trước

+0

Sự cố khi sử dụng phương thức 'onSelect' là nó không hoạt động theo cùng một cách với plugin datetimepicker. Lưu ý trong bản demo của bạn rằng bạn phải bấm vào một ngày để đóng tiện ích con. Đây không phải là trường hợp với các datetimepicker, có lẽ vì thanh trượt cho thời gian. Thực tế là không có sự kiện đáng tin cậy nào xảy ra khi người dùng chọn một ngày (nhấp chuột "thực hiện" trên plugin hoặc nhấp chuột vào tiện ích con) khiến bạn khó thực hiện theo cách này, ít nhất với nghiên cứu tôi đã thực hiện . –

+0

@Andrew: OK Tôi đã quyết định sẽ không làm bất cứ điều gì với những đầu vào đó, nhưng có một trang khác mà tôi cũng có 2 đầu vào (FROM và TO), ở đó hiển thị một lịch đơn giản là đủ, nhưng nếu tôi sử dụng http://jsbin.com/iyobi Tôi gặp lỗi trong IE. Tôi nên làm gì nếu lỗi này biến mất? – eddy

+0

Tôi không thấy lỗi trên IE8 hoặc IE8 ở chế độ IE7 –

Trả lời

1

Tôi đã tận dụng tối đa, nhưng không thể tìm ra cách đặt hourMinminuteMin sau khi tiện ích đã được khởi chạy. Với HTML sau:

<label for="from">From</label><input id="from" name="from" /> 
<label for="to">To</label><input id="to" name="to" /> 

Và đây JS:

$("#from").datetimepicker(); 
$("#to").datetimepicker({ 
    beforeShow: function(input, inst) { 
     var $toDateInput = $("#to"); 
     var fromDate = $("#from").datetimepicker("getDate"); 
     var toDate = $toDateInput.datetimepicker("getDate"); 
     var afterFromDate; 

     if (fromDate) { 
      if (!toDate || (toDate <= fromDate)) { 
       afterFromDate = new Date(fromDate.toUTCString()); 
       afterFromDate.setDate(afterFromDate.getDate() + 1);    
       $toDateInput.datetimepicker("setDate", afterFromDate); 
      } 
      $toDateInput.datetimepicker("option", "minDate", fromDate); 
     } 
    } 
}); 

Xem nó ở đây: http://jsfiddle.net/RWjtL/3/

Hầu hết các tiêu chí của bạn được đáp ứng, nhưng có một vài điều mà đang tắt:

  • Khi bạn đặt trường 'To' trống, ngày tối thiểu 'From' date của trình soạn thảo sẽ không bị xóa. Tôi đã thử đặt tùy chọn minDate thành null"" và có hành vi kỳ lạ. Here's a documented issue that could be related.
  • Phương thức beforeShow được gọi nhiều lần. Tôi nghĩ điều này là do cuộc gọi tới số setDate bên trong trình xử lý nhưng không thể chắc chắn.
  • Như đã nêu ở trên, tôi không thể quản lý để đặt hourMinminuteMin sau khi thực tế và đặt minDate dường như không tôn trọng phần thời gian của ngày.

Tác giả's GitHub page có danh sách các sự cố, một số vấn đề có vẻ liên quan đến vấn đề tôi gặp phải. Hy vọng rằng sẽ giúp bạn bắt đầu ít nhất.

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