2009-06-22 25 views
14

Tôi có một Datepicker và một Timepicker trong 2 trường nhập riêng biệt nhưng tôi cần phải kết hợp 2 trường nhập vào một cho một cuộc gọi cơ sở dữ liệu. Muốn biết liệu tôi chỉ có thể sử dụng 1 trường nhập cho cả hai điều khiển?jQuery Datepicker và Timepicker cho cùng một trường nhập để bật lên một cái khác

trước tiên gọi datepicker và người dùng sẽ nhấp vào ngày muốn và nó sẽ nhập giá trị, sau đó thanh thời gian sẽ bật lên và nối thêm ngày người dùng đã chọn trong hành động đầu tiên.

Tôi đang sử dụng các plug-ins jQuery UI DatepickerTimepickr

Vì vậy, tôi có một cái gì đó như thế này

<input class="datepicker">2009-06-22</input> 
<input class="timepicker">12:00:00</input> 

Nhưng muốn một cái gì đó như thế này

<input class="datetimepicker">2009-06-22 12:00:00</input> 

<script type="text/javascript"> 
// Date and Time picker same input field 
$("#datepicker").datepicker({ 
    dateFormat: 'yy-mm-dd', 
    onClose: function(dateText, inst) { 
     var tempDate = $("#datepicker").val(dateText); 
     $("#datepicker").timepickr({ 
     onClose: function(timeText, inst) { 
      var tempTime = $("#datepicker").val(dateText); 
      alert("Temp Time: '" + tempTime.val() + "'"); 
      $("#datepicker").val(tempDate.val() + ' ' + tempTime.val()); 
     } 
     });         
    } 
});    
</script> 
+0

Ah, sod. Tôi hơi say vào liên kết ở đó, đây là một lần nữa ... [jQuery Timepicker mod] (http://puna.net.nz/timepicker.htm) – Fentex

Trả lời

0

Dưới đây là một sự thay thế:

http://www.r-ip.ru/dev/datetimepicker/index.html

$('#datetimepicker').datetimepicker({ 
    dateFormat: 'yy-mm-dd', 
    timeFormat: ' hh:ii:ss' 
}); 
+1

Bộ chọn ngày giờ trên trang đó có những gì tác giả yêu cầu. .. –

+0

Điều đó không được nêu ra. Ngoài ra, giao diện cho bộ chọn thời gian trên liên kết được cung cấp là khủng khiếp. Đã cho tôi một vài giây để tìm ra rằng cách nhấp vào một giá trị gia tăng nó. Dù bằng cách nào, tôi đã xóa bỏ phiếu bầu của tôi. – Sampson

+1

Tôi đồng ý nó có những gì tôi được yêu cầu nhưng không phải với các plug-in tôi đang sử dụng mà tôi muốn sử dụng. Giải pháp bạn cung cấp là tốt nhưng tôi đồng ý rằng các điều khiển thời gian có chút khó hiểu. Cảm ơn mặc dù –

1

Bạn có thể liên kết sự kiện với sự kiện onClose() của trình ghi ngày tháng. Làm cho nó mở ra bộ chọn thời gian của bạn. Để cho datepicker viết giá trị cơ bản của đầu vào, và có timepicker nối thêm giá trị của nó sau một khoảng trống cho cùng một đầu vào.

  1. Liên kết bộ chọn ngày để nhập.
  2. Đính kèm phương pháp để mở trình ghi thời gian vào .onĐóng() sự kiện của bộ chọn ngày.
  3. Thêm giá trị bộ chọn thời gian (có khoảng cách trước đó) vào giá trị đầu vào.

Cập nhật: Theo sau là cập nhật do câu hỏi được cập nhật.

Các tài liệu đưa ra một ví dụ ngắn gọn về cách để ràng buộc một sự kiện/hành động để đóng cửa của datepicker:

$('.selector').datepicker({ 
    onClose: function(dateText, inst) { ... } 
}); 

Trong ví dụ này, bạn có thể sử dụng chức năng của bạn sau "onClode:" để viết giá trị vào đầu vào, và bật lên thanh thời gian.

$(".selector").datepicker({ 
    onClose: function(dateText, inst) { 
    $(".selector").val(dateText); 
    // Raise Timepickr 
    } 
}); 
+0

Tôi thích luồng của tùy chọn này nhưng chưa bao giờ liên kết bất kỳ thứ gì. Tôi đã chỉnh sửa bài đăng của mình ở trên để hiển thị cho bạn mã tôi đang sử dụng. Rất cơ bản –

+0

hmm làm cách nào để tôi gọi cho trình đếm thời gian? –

+0

Tôi xin lỗi - tôi không biết. Tôi chưa bao giờ sử dụng plugin của bên thứ ba cụ thể đó. Bạn sẽ phải tham khảo tài liệu cho nó, hoặc liên hệ với tác giả plugin. Nói một cách trung thực, có thể dễ dàng tìm ra một plugin của bên thứ ba khác mà cả ngày và thời gian được tích hợp vào một ngày - như http://razum.si/jQuery-calendar/TimeCalendar.html hoặc plugin được đề cập trong phản hồi của Alexander . – Sampson

0

Bạn có thể thử kết hợp các yếu tố đầu từ cả hai điều khiển vào một mặt hàng như

$("#datetime").focus(function() { 
    var mydate = $("#date").val(); 
    var mytime = $("#time").val(); 
    if(mydate && mytime && !this.value) { 
     this.value = mydate + " " + mytime; 
    } 
}); 
+0

hmm thú vị, cảm ơn –

16

Tôi muốn khuyên Any+Time(TM), trong đó bạn có thể kết hợp ngày/giờ trong một lĩnh vực duy nhất với một đơn , bộ chọn kết hợp ngày/giờ dễ sử dụng (và nhanh chóng!).

+0

Cảm ơn đây là một bổ sung tốt đẹp –

+0

Phiên bản 4 vừa được phát hành, với nhiều tính năng mới bao gồm hỗ trợ cho TIME ZONES (cố gắng tìm ra bất kỳ bộ chọn nào khác!), bộ chọn jQuery/chuỗi và xóa dễ dàng (để giảm rò rỉ bộ nhớ và hỗ trợ nhiều trang động hơn). Truy cập http://www.ama3.com/anytime/ để tìm hiểu thêm và tải xuống mã. Vui lòng sử dụng liên kết liên hệ trên trang web đó nếu bạn gặp bất kỳ sự cố nào hoặc có bất kỳ đề xuất nào. Cảm ơn! –

+2

Andrew, tôi vừa bắt đầu sử dụng bộ chọn AnyTime theo đề xuất của bạn. Công cụ tuyệt vời! :) Nếu bất kỳ ai khác tìm thấy bài đăng này và đang sử dụng jqgrid với chỉnh sửa nội dòng, bộ chọn AnyTime không hoạt động tốt ngay trên hộp. Nếu bạn mở một bộ chọn và sau đó đóng hàng, và sau đó quay trở lại cùng một trường bộ chọn, bạn sẽ nhận được một lỗi như "Không thể tạo một bộ chọn thời gian bất kỳ". Cách tôi tìm thấy để khắc phục điều này là để vượt qua \t $ ('đầu vào'). AnyTime_noPicker(); cho oneditfunc của editRow(). – jessica

0

Vui lòng thanh toán link.

Tôi đã cập nhật một số vấn đề bố trí và thêm thanh trượt thứ hai, mà sẽ được kích hoạt nếu {showTime:true, time24h:true}

Bạn có thể tìm thấy một bản gốc tại Google Code.

+0

Bạn có bất kỳ bản trình diễn nào không? –

1

Không phải jQuery, nhưng nó hoạt động tốt cho lịch theo thời gian: JavaScript Date Time Picker.

Chỉ cần ràng buộc sự kiện click để bật nó lên:

$("#date").click(function() { 
    NewCssCal($(this).attr('id'), 'mmddyyyy', 'dropdown', true, 12); 
}); 

Cá nhân tôi tìm thấy điều này dễ dàng hơn nhiều để làm theo. Nhưng rõ ràng bạn có rất nhiều tùy chọn với nhiều plugin jquery sẵn có để thực hiện công việc của bạn.

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