2015-10-29 5 views
6

के साथ प्रारंभिक न्यूनतम/अधिकतम सीमा विवादों को सेट करना मैं प्रारूप के साथ jQuery महीने पिकर (बिना तारीख के) का उपयोग करता हूं: 201110।jquery month picker: "से" <"से" फ़ंक्शन

मैं एक न्यूनतम तारीख (कोड में देखें) सेट करना चाहता हूं, इसलिए पहले इसे django form.py दिनांक-मिनट में परिभाषित करें, फिर इस दिनांक को HTML पर पार्स करें। पहले एक न्यूनतम/अधिकतम रेंज है। (हालांकि यह अब काम नहीं करता है)।

फिर "टू" तिथि का एहसास करने के लिए हमेशा "से" तिथि के बाद है, मुझे न्यूनतम/अधिकतम फ़ंक्शन का उपयोग करने की आवश्यकता है, फिर यह पिछले महीने की श्रेणी को SQL से सेट करता है।

धारावाहिक स्थिति मैं तारीख से "तारीख" तिथि "एहसास" महसूस कर सकता हूं। लेकिन न्यूनतम तारीख (MYSQL से आ रही है) अब काम नहीं करती है।

मैं इस संघर्ष को कैसे हल कर सकता हूं, कृपया मुझे बताएं। अग्रिम धन्यवाद

अग्रिम में आपके उत्तर के लिए धन्यवाद।

<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> 

मैं कैसे Django में मेरी मिनट की तारीख निर्धारित करें:

में models.py

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

में 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

आप एक अपरिभाषित मैदान पर कुल नहीं कर सकते हैं नहीं। आप 'date_min' को कैसे परिभाषित करना चाहते हैं? – Uri

उत्तर

2

सबसे पहले, आपको क्या करना चाहिए

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

$(this).date-min 

के बजाय

date-min विशेषता पाने के लिए।

आपकी अगली समस्या यह है कि आप डोम तैयार कॉलबैक के अंदर $(this) पर कॉल कर रहे हैं, जहां यह दस्तावेज़ ऑब्जेक्ट को #from या #to तत्व नहीं संदर्भित करता है।

समाधान आप देख रहे हैं

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

है और मैं इस लाइन के बारे में यकीन नहीं है:

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 --> 

यह ठीक है आप के रूप में एक क्षेत्र है जो संबंधित में वर्णित नहीं किया गया है कि मॉडल, लेकिन क्या आपको Min('start-date') या Min('end-date') जैसे कुछ प्राप्त करने की इच्छा नहीं है? और अपने प्रपत्र

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

की तरह कुछ के रूप में परिभाषित करता है बस

class Meta: 
    .... 
संबंधित मुद्दे