2009-11-23 81 views
73

Làm cách nào để vô hiệu hóa các ngày trong quá khứ trên trình chỉnh sửa ngày của jQuery? Tôi đã tìm kiếm các tùy chọn nhưng dường như không tìm thấy bất kỳ điều gì cho biết khả năng vô hiệu hóa các ngày trong quá khứ.Trình giữ ngày tháng jQuery để ngăn ngày trước

CẬP NHẬT: Cảm ơn bạn đã phản hồi nhanh. Tôi đã thử mà không có may mắn. Các ngày vẫn không chuyển sang màu xám như tôi mong đợi và vẫn chấp nhận ngày đã chọn trong quá khứ.

Tôi cố gắng này:

$('#datepicker').datepicker({ minDate: '0' }); 

Không làm việc.

Tôi cố gắng này:

$('#datepicker').datepicker({ minDate: new Date() }); 

Vẫn không hoạt động một trong hai.

Nó hiển thị tiện ích lịch tốt. Nó sẽ không có màu xám hoặc ngăn chặn đầu vào của những ngày trước. Tôi đã cố gắng minDate và maxDate trong quá khứ không có may mắn vì vậy tôi figured nó không phải là họ.

Trả lời

14

Sử dụng tùy chọn minDate để đặt ngày có thể tối thiểu. http://jqueryui.com/demos/datepicker/#option-minDate

+2

+1: Tôi đã sử dụng minDate và maxDate để thiết lập một khoảng thời gian ngày hợp lệ và nó hoạt động như một nét duyên dáng. –

33

Bạn chỉ cần chỉ định ngày tối thiểu - đặt thành 0 có nghĩa là ngày tối thiểu là 0 ngày kể từ hôm nay, nghĩa là hôm nay. Bạn có thể vượt qua chuỗi '0d' thay thế (đơn vị mặc định là ngày).

$(function() { 
    $('#date').datepicker({ minDate: 0 }); 
}); 
0

Thử đặt startDate thành ngày hiện tại. Ví dụ:

$('.date-pick').datePicker({startDate:'01/01/1996'}); 
+0

Điều này có vẻ như nó là cho bộ chọn ngày của Kevin Luck không phải là tiêu chuẩn JQuery một – salonMonsters

135

Hãy thử điều này:

$("#datepicker").datepicker({ minDate: 0 }); 

Tháo trích dẫn từ 0.

+0

Điều đó làm việc tuyệt vời! –

+0

Đây phải là câu trả lời được chấp nhận. – BWDesign

+4

@BWDesign Trả lời một năm rưỡi muộn hơn tôi;) –

9

này hoạt động:

$("#datepicker").datepicker({ minDate: +0 }); 
+0

Giải pháp này hoạt động thực sự! – Michiel

2

Tôi đang sử dụng mã sau đây để định dạng ngày tháng và hiển thị 2 tháng trong lịch ...

<script> 
$(function() { 

    var dates = $("#from, #to").datepicker({ 

     showOn: "button", 
     buttonImage: "imgs/calendar-month.png", 
     buttonImageOnly: true,       
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 2, 

     onSelect: function(selectedDate) { 




      $(".selector").datepicker({ defaultDate: +7 }); 
      var option = this.id == "from" ? "minDate" : "maxDate", 


       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
        instance.settings.dateFormat || 
        $.datepicker._defaults.dateFormat, 
        selectedDate, instance.settings); 

      dates.not(this).datepicker("option", "dateFormat", 'yy-mm-dd'); 


     } 
    }); 
}); 

</script> 

Vấn đề là tôi không chắc chắn làm thế nào để hạn chế ngày trước lựa chọn.

23

Xóa dấu ngoặc kép xung quanh 0 và nó sẽ hoạt động.

Working Đoạn Mã:

// set minDate to 0 for today's date 
 
$('#datepicker').datepicker({ minDate: 0 });
body { 
 
    font-size: 12px; /* just so that it doesn't default to 16px (which is kinda huge) */ 
 
}
<!-- load jQuery and jQuery UI --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> 
 

 
<!-- load jQuery UI CSS theme --> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> 
 

 
<!-- the datepicker input --> 
 
<input type='text' id='datepicker' placeholder='Select date' />

+1

Bất kỳ giải thích nào về lý do tại sao dấu phẩy là cần thiết? Tôi có thể xóa nó và mọi thứ vẫn hoạt động bình thường. Có một số trình duyệt yêu cầu dấu phẩy cho một đối tượng thuộc tính duy nhất không? – schickm

+0

Bạn chỉ cần dấu phẩy nếu bạn đang sử dụng nhiều tùy chọn, ví dụ: '$ ('# datepicker'). Datepicker ({minDate: 0, maxDate:" + 1M + 10D ", dateFormat: 'yy-mm-dd'});' Bạn không cần dấu phẩy sau lần cuối cùng tùy chọn – Tanvir

+1

bạn đang gửi một đối tượng đến phương thức. dấu phẩy trên giá trị cuối cùng không đúng. –

1

Hãy chắc chắn rằng bạn đặt nhiều thuộc tính trong cùng một dòng (vì bạn chỉ rút 1 dòng mã, bạn có thể có cùng một vấn đề Tôi đã làm).

Mỏ sẽ đặt ngày mặc định nhưng không tô xám ngày cũ.Điều này không làm việc:

$('#date_end').datepicker({ defaultDate: +31 }) 
$('#date_end').datepicker({ minDate: 1 }) 

này hiện cả hai:

$('#date_end').datepicker({ defaultDate: +31, minDate: 1 }) 

1 và 1 công việc như nhau (hoặc 0 và 0 trong trường hợp của bạn).

nhớ: Windows 7 x64, Rails 3.2.3, Ruby 1.9.3

22

Nếu bạn đang đối phó với một bảng chọn ngày ràng buộc trước sau đó thiết lập

$("#datepicker").datepicker({ minDate: 0 }); 

sẽ không hoạt động. Cú pháp đó chỉ áp dụng khi bạn đang tạo widget.

Để đặt ngày tối thiểu cho một bảng chọn ngày ràng buộc sử dụng như sau:

$("#datePicker").datepicker("option", "minDate", 0); 
+1

cảm ơn bạn vì giải pháp bị ràng buộc trước đó – stackoverfloweth

+1

Cảm ơn bạn.Tôi lãng phí thời gian dài để tìm giải pháp này và điều này giải quyết được vấn đề của tôi. – Rushan

1
var givenStartDate = $('#startDate').val(); 
     alert('START DATE'+givenStartDate); 
     var givenEndDate = $('#endDate').val(); 
     alert('END DATE'+givenEndDate); 
     var date = new Date(); 
     var month = date.getMonth()+1; 
     var day = date.getDate(); 
     var currentDate = date.getFullYear() + '-' + 
      (month<10 ? '0' : '') + month + '-' + 
      (day<10 ? '0' : '') + day; 
     if(givenStartDate < currentDate || givenEndDate < currentDate) 
     { 
     $("#updateButton").attr("disabled","disabled"); 
     } 
     if(givenStartDate < currentDate && givenEndDate > currentDate) 
      { 
      $("#updateButton").attr("enabled","enabled"); 
      } 
     if(givenStartDate > currentDate || givenEndDate > currentDate) { 
     $("#updateButton").attr("enabled","enabled"); 
     } 

Hãy thử điều này. Nếu có sai sót, hãy sửa tôi :) Cảm ơn tất cả.

10

Không để tâm trí và nó sẽ hủy bỏ các ngày trong quá khứ.

$("#datepicker").datepicker({ minDate: 0}); 

Live example

read more here

7

// disable tương lai ngày

$('#datetimepicker1').datetimepicker({ 
      format: 'DD-MM-YYYY', 
      maxDate: new Date 
     }); 

// disable qua ngày

$('#datetimepicker2').datetimepicker({ 
     format: 'DD-MM-YYYY', 
     minDate: new Date 
    }); 
+0

Tôi không chắc tại sao câu trả lời này bị bỏ phiếu xuống, bởi vì giải pháp của nó làm việc cho tôi, trong khi giải pháp được chấp nhận sử dụng '0' gây ra lỗi JavaScript. +1 – Sheridan

5

$("#datePicker").datePicker({startDate: new Date() });. này làm việc cho tôi

0

tôi sử dụng thuộc tính min: min="' + (new Date()).toISOString().substring(0,10) + '"

Đây là mã của tôi và nó làm việc.

<input type="date" min="' + (new Date()).toISOString().substring(0,10) + '" id="' + invdateId + '" value="' + d.Invoice.Invoice_Date__c + '"/> 

enter image description here

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