2015-10-29 13 views
6

tôi sử dụng tháng picker jQuery (không có ngày) với các định dạng như: 201.110.jquery tháng chọn: thiết lập một min/xung đột phạm vi tối đa ban đầu với "từ" < "để" chức năng

Tôi muốn thiết lập một ngày tối thiểu (xem trong mã), vì vậy đầu tiên định nghĩa nó trong django forms.py ngày-min, sau đó phân tích ngày này để html. Có một min/max phạm vi đầu tiên. (mặc dù điều này không làm việc bây giờ).

Sau đó, để nhận ra ngày "đến" luôn muộn hơn "từ" ngày, tôi cũng cần sử dụng hàm tối thiểu/tối đa, sau đó ghi đè các phạm vi tháng trước mà tôi đã đặt từ SQL.

Tình hình currenct là tôi có thể nhận ra "thành" ngày> "từ". Nhưng ngày tối thiểu (đến từ MYSQL) hiện không hoạt động.

Làm thế nào tôi có thể giải quyết mâu thuẫn này, xin vui lòng cho tôi biết. Cảm ơn trước

Cảm ơn bạn đã trả lời trước.

<script type="text/javascript"> 
    $(function() { 
$("#from, #to").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     showButtonPanel: true, 
     dateFormat: 'yy MM', 
     minDate: $(this).date-min, ///it is here doesn't work, the minDate is coming from Django 

     onClose: function(dateText, inst) { 
      var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); 
      var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();    
      $(this).datepicker('setDate', new Date(year, month, 1)); 
     }, 
     beforeShow : function(input, inst) { 
      if ((datestr = $(this).val()).length > 0) { 
       year = datestr.substring(datestr.length-4, datestr.length); 
       month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNames')); 
       $(this).datepicker('option', 'defaultDate', new Date(year, month, 1)); 
       $(this).datepicker('setDate', new Date(year, month, 1));  
      } 
      var other = this.id == "from" ? "#to" : "#from"; 
      var option = this.id == "from" ? "maxDate" : "minDate";   
      if ((selectedDate = $(other).val()).length > 0) { 
       year = selectedDate.substring(selectedDate.length-4, selectedDate.length); 
       month = jQuery.inArray(selectedDate.substring(0, selectedDate.length-5), $(this).datepicker('option', 'monthNames')); 
       $(this).datepicker("option", option, new Date(year, month, 1)); 
      } 
     } 
    }); 
    $("#btnShow").click(function(){ 
    if ($("#from").val().length == 0 || $("#to").val().length == 0){ 
     alert('All fields are required'); 
    } 
    else{ 
     alert('Selected Month Range :'+ $("#from").val() + ' to ' + $("#to").val()); 
     } 
    }) 
    }); 


    </script> 

Làm thế nào tôi xác định min-ngày của tôi trong Django:

Trong models.py

class XXX(models.Model): 
    start_date=models.DateField(auto_now_add=True) 
    end_date=models.DateField(auto_now_add=True) 

Trong forms.py

class Meta: 
     model = XXX 
     fields = ('start_date','end_date') 
     date_min=XXX.objects.all().aggregate(Min('date')) <this field is NOT defined in models.py, is that OK?; and format is like 2011-11-01 --> 

     widgets = { 
       'start_date': forms.DateInput(attrs={'class':'datepicker', 
                'date-min':date_min,             
                }),       
      } 
+0

Bạn không thể tổng hợp về một lĩnh vực không xác định. Bạn muốn xác định 'date_min' như thế nào? – Uri

Trả lời

2

Trước hết, bạn nên làm

$(this).attr('date-min') 

thay vì

$(this).date-min 

để có được date-min thuộc tính.

Vấn đề tiếp theo của bạn là bạn đang gọi $(this) bên trong cuộc gọi lại sẵn sàng cho dom, trong đó điều này đề cập đến đối tượng tài liệu không phải là yếu tố #from hoặc #to.

Các giải pháp bạn đang tìm kiếm là

$(function() { 
    $("#from, #to").each(function() { 
     $(this).datepicker({ 
      .... 
      minDate: $(this).attr('date-min'), 
      .... 
     }) 
    }) 
) 

Và tôi không chắc chắn về dòng này:

date_min=XXX.objects.all().aggregate(Min('date')) <this field is NOT defined in models.py, is that OK?; and format is like 2011-11-01 --> 

Đó là OK rằng bạn có một trường ở dạng mà không được mô tả trong liên quan mô hình, nhưng bạn không có cây đũa phép để có được một cái gì đó như Min('start-date') hoặc Min('end-date') ở đây? Và không hình thức của bạn định nghĩa là một cái gì đó giống như

class XXXForm(forms.ModelForm): 
    class Meta: 
     .... 

không chỉ

class Meta: 
    .... 
Các vấn đề liên quan