2009-04-11 22 views
5

(उम्मीद है) सरल प्रश्न:jQuery-UI Datepicker: draggable?

क्या jQuery UI Datepicker draggable बनाना संभव है? यदि हां, तो क्या कोई मुझे कुछ नमूना कोड दे सकता है?

उत्तर

9

$ ("। Ui-datepicker")। Draggable() काम नहीं करता है?

+0

वास्तव में यह करता है। मैं स्पष्ट रूप से jQuery यूआई के लिए नया हूं इसलिए नोबिश प्रश्न पर मदद के लिए धन्यवाद। –

+0

कोई समस्या नहीं :) यह जानने के लिए कि जावास्क्रिप्ट के माध्यम से कौन से वर्ग और आईडी तत्व लोड किए गए हैं, फ़ायरबग इंस्टॉल करें। – zalew

+0

ओह मेरा विश्वास करो, फायरबग मेरा दोस्त है। मुझे अभी पता नहीं था कि डेटपिकर ड्रैग करने योग्य बनाना संभव था या नहीं। –

6

आदेश महत्वपूर्ण है।

$('#myCalendarInput').datepicker(); 
$('#ui-datepicker-div').draggable(); 

संपादित: वहाँ जवाब @JZ आपूर्ति और मेरा के बीच एक सूक्ष्म अंतर है। जेडजेड के उदाहरण का उपयोग पृष्ठ पर किसी भी डेटपिकर को खींचने योग्य होगा, यहां तक ​​कि इनलाइन (इनपुट तत्व के बजाय डीआईवी से जुड़े) भी। मेरा कोड केवल पॉपअप डेटपिकर्स ड्रैगगेबल बना देगा। डेटपिकर प्लगइन सभी पॉपअप के लिए एक एकल डीआईवी (नाम ui-datepicker-div) बनाता है और उस पृष्ठ पर किसी भी इनपुट के लिए इसका उपयोग करता है जिस पर डेटपिकर लागू किया गया है। इनलाइन डीआईवी या स्पैन के लिए यह डीआईवी/स्पैन के अंदर एक नया, अज्ञात डेटपिकर बनाता है जिसमें .ui-datepicker क्लास है, लेकिन उसका नाम नहीं है। इस मामले में, मेरा कोड डेटपिकर ड्रैगगेबल नहीं करेगा, तर्कसंगत रूप से सही व्यवहार करेगा, लेकिन जेडजेड कक्षा के आधार पर मेल खाएगा।

उदाहरण:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#calendar').datepicker(); 
    $('#calendar2').datepicker(); 
    $('#calendar3').datepicker(); 
    $('#ui-datepicker-div').draggable(); 
}); 
</script> 

<div> 
Calendar: <input id="calendar" type="text" /><br /> <-- draggable 
Calendar2: <input id="calendar2" type="text" /><br/> <-- draggable 
Fixed calendar: <div id="calendar3"></div> <-- fixed 
</div> 
+0

मैंने जेडजेड के उत्तर के काम के बाद से यह कोशिश नहीं की है, लेकिन क्या आप इस समाधान के साथ एक ही पृष्ठ पर एकाधिक डेटपिकर्स के साथ कोई समस्या नहीं उठाएंगे? –

+0

मेरे कोड और जेडजेड के बीच एक अंतर है। इनपुट तत्व के लिए, डेटपिकर केवल एक ui-datepicker-div बना देगा और पॉपअप की आवश्यकता वाले सभी इनपुट के लिए इसका पुन: उपयोग करेगा। यदि आप इनलाइन कैलेंडर का उपयोग करते हैं, हालांकि, जेडजेड कोड इसे खींचने योग्य बना देगा, जबकि मेरा नहीं होगा क्योंकि इसमें एक ही आईडी नहीं होगी। – tvanfosson

+0

आह। स्पष्टीकरण के लिए धन्यवाद। +1 –

2

आप datepicker में एक घटना को जोड़ने और इसका इस्तेमाल करते हैं यह खींचने योग्य बनाने के लिए कर सकते हैं।

//Add an event "onCreate" 
$.datepicker._updateDatepicker_Old = $.datepicker._updateDatepicker; 
$.datepicker._updateDatepicker = function(inst) { 
    this._updateDatepicker_Old(inst); 

    var onCreate = this._get(inst, 'onCreate'); 
    if (onCreate !== null) { 
     onCreate(inst); 
    } 
}; 

डेटपिकर को कॉल करने के बाद और फ़ंक्शन को लागू करने के बाद इसे खींचने योग्य बनाने के लिए बनाएं।

$(function() { 
    //Create datepicker 
    $('#datepicker').datepicker({ 
     onCreate: function(inst) { 
      $(inst.dpDiv).draggable(); 
     } 
    }); 
});​ 

Example jsfiddle

+0

उत्तर के लिए धन्यवाद। यह एक दिलचस्प विचार है, लेकिन स्वीकार्य उत्तर के समान ही काम करने के लिए यह अत्यधिक जटिल लगता है। अगर मुझे ऐसा करने की ज़रूरत नहीं है तो मैं jQuery UI पर चीज़ों को हैक नहीं करना चाहूंगा। –

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