2009-10-31 11 views
7

मैं "< पिछला" और "अगला>" एक jQueryUI datepicker नियंत्रण के लिए लिंक संलग्न करने के लिए कोशिश कर रहा हूँ का उपयोग कर। मेरी समस्या यह है कि यह ठीक से 1 दिन जोड़ देगा, लेकिन फिर बंद करो। यह दिन जोड़ने जारी नहीं रखेगा। (पिछले बटन के साथ ही)। तो अगर मैं 10/30/2009 में प्रवेश करता हूं तो यह केवल 10/31/2009 तक "अगली" होगा, और 1 नवंबर तक नहीं चलेगा। कोई विचार?बनाने में त्रुटि एक '<पिछले' और 'अगले>' (तारीख) jQueryUI datepicker के लिए लिंक setdate

प्रासंगिक एचटीएमएल:

<form id="dateForm"> 
<a href="" id="previous">&laquo; Previous</a> 
<input name="datepicker" type="text" value="10/30/2009" id="datepicker" /> 
<a href="" id="next">Next &raquo;</a> 

प्रासंगिक जावास्क्रिप्ट/jQueryUI:

// Datepicker Init 
$("#datepicker").datepicker({showOn: 'button', buttonText: 'Click to choose date'}).change(function() { 
    refreshSchedule(); 
}); 

// Next Day Link 
$('a#next').click(function() { 
    $("#datepicker").datepicker('setDate', '+1'); 
    refreshSchedule(); 
    return false; 
}); 

// Previous Day Link 
$('a#previous').click(function() { 
    $("#datepicker").datepicker('setDate', '-1'); 
    refreshSchedule(); 
    return false; 
}); 

jQueryUI datepicker सही ढंग से काम करता है अन्यथा यहाँ मेरी सरलीकृत कोड है।

प्रति टिप्पणी अपडेट करें - रीफ्रेश कैलेंडर() फ़ंक्शन को नाम दिया जा सकता था कुछ(); #datepicker फ़ील्ड को बढ़ाने/घटाने के तरीके के बारे में मूल प्रश्न के लिए यह अप्रासंगिक है। उस ने कहा, यहां कोड है। मैं एक ही चीज़ ($ # डेटपिकर ") के साथ एक ही काम कर सकता था। तालिका (शीर्षक) को बदलने के लिए() श्रोता और कॉलबैक फ़ंक्शन बदलें।

// Get the latest calendar data from server. Update the calendar title & table 
// returns a json array: data[0] = title, data[1] = html table contents 
refreshCalendar = function() { 
    var selectedDate = $("#datepicker").val(); 
    $.getJSON(serverUrl, {targetDate: selectedDate}, function (data) { 
     $("#calendarTitle").html(data[0]); 
     $("#calendarTable").html(data[1]); 
    }); 
}; 
+0

आप क्या refreshSchedule() कर रहा है के साथ प्रश्न अपडेट कर सकते हैं? ऐसा लगता है कि HTML में एक और इनपुट बटन भी होना चाहिए? क्या आप इसे भी अपडेट कर सकते हैं? – RedWolves

+0

मैंने प्रश्न को सरल बनाने के लिए ऊपर दिए गए उदाहरणों में से लक्ष्य तालिका HTML को छोड़ दिया है। यह सिर्फ एक मानक तालिका है जिसमें सिर पर #calendarTitle आईडी और शरीर के लिए #calendarTable आईडी है। इस शेड्यूल के लिए तालिका HTML का शेष सर्वर साइड स्क्रिप्ट द्वारा बनाया गया है। –

उत्तर

13

चूंकि डेटपिकर सेटडेट के लिए दस्तावेज़ कहते हैं कि आज से आप कई दिनों की स्ट्रिंग प्रदान कर सकते हैं। तो इसका मतलब है $()। डेटपिकर ('सेटडेट', '-1'); हमेशा आज की तारीख के बराबर होती है - 1 दिन, आप एक पंक्ति में है कि 12 बार फोन कर सकते हैं और यह एक ही बात के बराबर हमेशा जाएगा (जब तक आप एक दिन में 11:59 p.m. को शुरू करने और अगले 12:01 बजे समाप्त)

http://jqueryui.com/demos/datepicker/#method-setDate

यह क्या मुझे लगता है कि आप चाहते हैं:

// Next Day Link 
$('a#next').click(function() { 
    var $picker = $("#datepicker"); 
    var date=new Date($picker.datepicker('getDate')); 
    date.setDate(date.getDate()+1); 
    $picker.datepicker('setDate', date); 
    return false; 
}); 

// Previous Day Link 
$('a#previous').click(function() { 
    var $picker = $("#datepicker"); 
    var date=new Date($picker.datepicker('getDate')); 
    date.setDate(date.getDate()-1); 
    $picker.datepicker('setDate', date); 
    return false; 
}); 
+0

मैंने देखा कि दस्तावेज़ों में, लेकिन मुझे आश्चर्य हुआ कि इसमें वृद्धि/घटने के लिए एक विधि नहीं बनाई गई थी - लगभग जैसे कि मुझे कुछ याद आ रहा था। आपका समाधान अच्छी तरह से काम करता है। मैं सोच रहा था उससे थोड़ा अलग तरीके से जाता है। मैं सावधानीपूर्वक समीक्षा और प्रतिक्रिया की सराहना करता हूं! –

1

मैं भी हाल ही में इस में आए और उत्पादन में थोड़ा सा संशोधन करने की जरूरत - यहाँ मेरी jsfiddle है। ध्यान दें कि इस तरह इस्तेमाल होने पर बटन के क्लिक पर;

<button class="prev-day">Previous</button> 

पृष्ठ को रीफ्रेश करेगा जो बहुत अधिक सर्वर संसाधन का उपयोग कर सकता है। इससे बचने के लिए आप

<button type="button" class="prev-day">Previous</button> 

उपयोग कर सकते हैं और अगर आप की जरूरत है, तो आप अन्य संबंधित समारोह/डेटा AJAX कॉल का उपयोग कर ताज़ा सकता है।

http://jsfiddle.net/uh26x030/1

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