2010-12-13 18 views
6

मैं दो इनपुट बॉक्स में इस timepicker addon के साथ Jquery डेटपिकर प्लगइन का उपयोग कर रहा हूं, एक "प्रेषक" तिथि के लिए और दूसरा "टू" दिनांक के साथ।JQuery डेटपिकर- 2 इनपुट से

जब मैं पहली बार एक निर्धारित करते हैं, मैं एक दूसरे के पहले में चयनित तिथि के एक दिन बाद होना चाहते हैं, तारीख

"से" में चयनित तिथि से पहले की सभी तिथियों तो अक्षम करने " "तिथि पहले चुना गया है, तो" प्रेषक "तिथि" टू "तिथि से पहले दिन पर सेट की जाती है।

मैं कुछ उदाहरण मिल गया है, लेकिन मैं कैसे समय साथ तारीख पाने के लिए तो, अगर मैं, उदाहरण के लिए, /12/2010 15:50 में चयन नहीं जानता " प्रदर्शित होने वाली "तारीख, में तारीख" प्रति "तिथि 14/12/2010 15:50 या कम से कम /12/2010 00:00 को को तैयार है।

संपादित ***

मैं सिर्फ इस piece of code काम करता है कि के रूप में मैं चाहता हूँ, लेकिन timepicker ऐड-ऑन के बिना पाया है।

$(function(){ 

    $('#dateFrom').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateTo').datepicker('option','minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
      } 
    }); 
    $('#dateTo').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateFrom').datepicker('option','maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
    }   
    }); 

}); 

ऊपर कोड के आधार पर यह यह अनुकूल करने के लिए संभव हो जाएगा, ताकि मैं timepicker ऐड-ऑन के साथ उपयोग कर सकते हैं?

धन्यवाद पहले से

+0

'ऑनसेलेक्ट' विधि का उपयोग करने में समस्या यह है कि यह डेटामैपिकर प्लगइन के साथ समान व्यवहार नहीं करता है। अपने डेमो में नोटिस करें कि आपको विजेट को बंद करने के लिए एक दिन क्लिक करना होगा। यह समय के लिए स्लाइडर की वजह से डेटीमपिकर के साथ मामला नहीं है। तथ्य यह है कि कोई विश्वसनीय घटना नहीं है जो उपयोगकर्ता द्वारा दिनांक चुनने पर आग लगती है (या तो प्लगइन पर "किया गया" क्लिक या विजेट के क्लिक से क्लिक करता है) कम से कम उस शोध के साथ ऐसा करना मुश्किल हो जाता है । –

+0

@Andrew: ठीक है मैंने फैसला किया है कि मैं उन इनपुट के साथ कुछ भी नहीं करने जा रहा हूं, लेकिन एक और पृष्ठ है जहां मेरे पास 2 इनपुट (FROM और TO) भी हैं, वहां एक साधारण कैलेंडर दिखाना पर्याप्त है, लेकिन अगर मैं इसका उपयोग करता हूं यह http://jsbin.com/iyobi मुझे आईई में एक त्रुटि मिलती है। मुझे यह त्रुटि गायब करने के लिए क्या करना चाहिए? – eddy

+0

मुझे IE7 मोड –

उत्तर

0

कोशिश onSelect या onClose घटना का उपयोग करने के minDate और maxDate विकल्पों को बदलने के लिए।

1

मुझे इसमें से अधिकतर मिला है, लेकिन विजेट को पहले ही शुरू करने के बाद hourMin और minuteMin सेट करने का तरीका पता नहीं लगा सका। यह देखते हुए निम्न HTML:

<label for="from">From</label><input id="from" name="from" /> 
<label for="to">To</label><input id="to" name="to" /> 

और यह JS:

$("#from").datetimepicker(); 
$("#to").datetimepicker({ 
    beforeShow: function(input, inst) { 
     var $toDateInput = $("#to"); 
     var fromDate = $("#from").datetimepicker("getDate"); 
     var toDate = $toDateInput.datetimepicker("getDate"); 
     var afterFromDate; 

     if (fromDate) { 
      if (!toDate || (toDate <= fromDate)) { 
       afterFromDate = new Date(fromDate.toUTCString()); 
       afterFromDate.setDate(afterFromDate.getDate() + 1);    
       $toDateInput.datetimepicker("setDate", afterFromDate); 
      } 
      $toDateInput.datetimepicker("option", "minDate", fromDate); 
     } 
    } 
}); 

इसे यहाँ देखें: http://jsfiddle.net/RWjtL/3/

आपके मानदंड से अधिकांश मुलाकात कर रहे हैं, लेकिन वहाँ कुछ चीजें है कि बंद कर रहे हैं:

  • जब आप 'टू' फ़ील्ड को रिक्त सेट करते हैं, तो 'से' डेटपिकर की न्यूनतम तिथि को हटाया नहीं जाता है। मैंने minDate विकल्प को null और "" पर सेट करने का प्रयास किया और अजीब व्यवहार प्राप्त किया। Here's a documented issue that could be related
  • beforeShow विधि को कई बार कहा जाता है। मुझे लगता है कि यह हैंडलर के अंदर setDate पर कॉल के कारण है, लेकिन यह सुनिश्चित नहीं हो सकता है।
  • जैसा कि ऊपर बताया गया है, मैं इस तथ्य के बाद hourMin और minuteMin सेट करने का प्रबंधन नहीं कर सका, और minDate सेटिंग को दिनांक के समय के भाग का सम्मान नहीं करता है।

लेखक की GitHub page में मुद्दों की एक सूची है, जिनमें से कुछ मेरे द्वारा चलाए गए मुद्दों से संबंधित प्रतीत होते हैं। उम्मीद है कि आप कम से कम शुरू हो जाता है।

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