2010-03-20 19 views
7

मैं jQuery डेटपिकर का उपयोग कर रहा हूं। मेरे "एंडडेट" टेक्स्टबॉक्स में मैं "स्टार्टडेट" टेक्स्टबॉक्स + से चुने गए दिनांक का उपयोग करना चाहता हूं। 1. मैं यह कैसे कर सकता हूं?jQuery डेटपिकर minDate चर

मैंने कोशिश की लेकिन काम नहीं किया। मेरी आरंभ तिथि कोड में मैं था ...

  test = $(this).datepicker('getDate'); 
      testm = new Date(test.getTime()); 
      testm.setDate(testm.getDate() + 1); 
मेरी समाप्ति दिनांक कोड रहा था में

फिर ...

minDate: testm, 

लेकिन अंत तिथि अभी भी महीने के उपलब्ध के लिए सभी दिन बना दिया।


संपादित करें। मुझे उत्सुकता है कि यह क्यों काम नहीं करता है। मेरी आरंभ तिथि datepicker में मैं इस ..

onSelect: function (dateText, inst) { 
    test = dateText 
} 

मैं अपने अंतिम तिथि नहीं datepicker में नीचे क्यों नहीं आते हैं और कह सकते हैं, minDate: test?


संपादित करें। फिर भी काम नहीं कर रहा

$(".dateStartDatePickerBox").datepicker({ 
     minDate:'-0d', 
     onSelect: function(dateText, inst) 
     { 
      test = $(this).datepicker('getDate'); 
      testm = new Date(test.getTime()); 
      testm.setDate(testm.getDate() + 1); 

      $("#dateEndDatePickerBox").datepicker("option", "minDate", testm); 
     } 
    }); 

    $(".dateEndDatePickerBox").datepicker({ 
     onSelect: function() 
     { 

     } 
    }); 

उत्तर

21

आप आरंभ तिथि के परिवर्तन घटना पर गतिशील मिनट तिथि निर्धारित करने की आवश्यकता होगी।

कुछ की तरह:

आप निम्न कार्य नहीं कर सकता:

$("#startDate").change(function() { 
    test = $(this).datepicker('getDate'); 
    testm = new Date(test.getTime()); 
    testm.setDate(testm.getDate() + 1); 

    $("#endDate").datepicker("option", "minDate", testm); 
}); 

संपादित करने के लिए उत्तर

var test; 
$("#myinput").datepicker({ 
    onSelect: function() { test = $(this).datepicker("getdate"); } 
}); 
$("#myotherinput").datepicker({ 
    minDate: test 
}); 

टेस्ट बार हुआ है कि minDate पर सेट किया जा रहा है पर अप्रारंभीकृत है myotherinput। मिनीडेट को निस्संदेह सेट करने की प्रक्रिया में डीओएम मैनिपुलेशन की आवश्यकता होती है जो डेटपिकर प्रारंभिकरण पर या "विकल्प" कहलाता है। केवल वेरिएबल को बदलना जो प्रारंभिकरण के लिए उपयोग किया गया था, पहले से प्रारंभिक डेटपिकर को प्रभावित नहीं करता है।

+0

जोएल, मैंने कोशिश की। लेकिन चुनने के बाद, मेरी शुरुआत तिथि में 3/23/2010। इस महीने के लिए अंतिम तिथि विकल्प अभी भी उपलब्ध थे। यहां लक्ष्य है, इस उदाहरण में, वे 3/24/2010 से शुरू होते हैं। – d3020

+1

यह विधि यहां काम कर रही है: http://jsbin.com/uvehu/edit। अगर यह अभी भी आपके लिए काम नहीं कर रहा है तो कृपया अधिक संदर्भ और कोड प्रदान करें। – Joel

+0

जोएल, मैं उस उदाहरण को देख सकता हूं। मेरे पास कोड दिखाने के लिए मैं अपनी मूल पोस्ट संपादित करूंगा। सहायता के लिए धन्यवाद। – d3020

0

क्या आप अधिकतम चयन तिथि निर्धारित कर रहे हैं?

StartDate = new Date("March 20, 2010"); 
EndDate = new Date("March 21, 2010"); 

$("#datepicker").datepicker({ minDate: StartDate, maxDate: EndDate, defaultDate: StartDate }); 

अधिकतम डेटा नोट करें? इससे आपको किसी भी दिन का चयन नहीं करने देगा ...

+0

जस्टिन, यह करीब है। मुझे थोड़ी और समझाने दो। आपके उदाहरण स्टार्टडेट में ... मुझे अपनी प्रारंभ तिथि कैलेंडर से चुनी गई तारीख होने की आवश्यकता है। फिर एंडडेट के लिए मुझे यह कहना है कि जो भी तारीख चुना गया था + 1. – d3020

0

दिनांक पिकर के लिए एपीआई documentation ऐसा लगता है कि इसे डेट ऑब्जेक्ट लेना चाहिए, लेकिन मुझे अतीत में यह सही समस्या है और यह है मैंने इसे कैसे हल किया।

minDate ऑफसेट की तारीख को ऑफ़सेट करें। आपको अपनी प्रारंभ तिथि लेने के लिए एक फ़ंक्शन की आवश्यकता होगी, इसमें एक जोड़ें और फिर ऑफसेट प्राप्त करें।

function offsetFromToday(someDate) { 
    // clear time offset because we only want to take date into account 
    someDate.setHours(0); 
    someDate.setMinutes(0); 

    // The number of milliseconds in one day 
    var ONE_DAY = 1000 * 60 * 60 * 24; 

    // Convert both dates to milliseconds 
    someDate = someDate.getTime(); 
    var today = new Date().getTime(); 

    // Calculate the difference in milliseconds 
    var difference = Math.abs(someDate - today); 

    // Convert back to days and return 
    return Math.floor((difference/ONE_DAY) + 1); 
} 

तो तुम सिर्फ एक दिन आगे अपनी आरंभ तिथि प्राप्त करने की आवश्यकता:: तो आप की तरह एक समारोह हो सकता था StartDate.setDate(StartDate.getDate() + 1) या इसी तरह, और फिर इसे इस समारोह को पारित एक ऑफसेट करने के लिए है, तो उस को देना minDate

+0

थेंडुक, मैं पूरी तरह से स्पष्ट नहीं हूं कि इसे वर्तमान में कहां से बुलाया जाएगा। क्या आप मेरा आखिरी संपादन देख सकते हैं और मुझे बता सकते हैं कि मेरे पास यह कहां होगा? – d3020

+0

बीटीडब्ल्यू - मेरे आखिरी संपादन में, मुझे लगता है, यह काम करेगा लेकिन मेरे पास यह लाइन है - $ ("# dateEndDatePickerBox")। डेटपिकर ("विकल्प", "minDate", testm); गलत जगह पर और समाप्ति तिथि डेटपिकर इसे नहीं देख रहा है। मैं निश्चित तारीख डेटपिकर में उस लाइन को लागू करने के लिए निश्चित नहीं हूं। – d3020

संबंधित मुद्दे