2009-12-27 20 views
16

मैं पिनैक्स का उपयोग कर साइट विकसित कर रहा हूं। मेरे टेम्पलेट्स में से एक में मैं एक साधारण jquery संवाद बॉक्स खोलने की कोशिश कर रहा हूं। हालांकि मैं "डायलॉग फ़ंक्शन नहीं" जावास्क्रिप्ट त्रुटि प्राप्त कर रहा हूं। मैं jquery 1.2.6 और jquery-ui 1.6 का उपयोग कर रहा हूँ। मेरी जावास्क्रिप्ट और एचटीएमएल निम्नानुसार हैं:JQuery UI संवाद - * संवाद एक फ़ंक्शन नहीं * त्रुटि

<html> 
<head> 
<link type="text/css" href="/site_media/smoothness/ui.all.css" rel="stylesheet" /> 
<script src="/site_media/jquery.js" type="text/javascript"></script> 
<script src="/site_media/ui/ui.core.js" type="text/javascript"></script> 
<script src="/site_media/ui/ui.draggable.js" type="text/javascript"></script> 
<script src="/site_media/ui/ui.resizeable.js" type="text/javascript"></script> 
<script src="/site_media/ui/ui.dialog.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
        $('#dialogbox').dialog(); 
      }); 
</script> 
</head> 
<body> 
    <div id="dialogbox" title="dialog title"> 
    <p>Test dialog</p> 
    </div> 
</body> 
</html> 

क्या कोई यह बता सकता है कि यह क्यों हो रहा है?

+1

jQuery UI संवाद कोड किसी कारण से ठीक से प्रारंभ नहीं किया गया है। एक उचित संदर्भ jquery UI जेएस फ़ाइल बनाने का प्रयास करें क्योंकि उन्हें एक-एक करके संदर्भित करने के विपरीत - यह आपकी समस्या का समाधान कर सकता है। इस तरह आप इसे किसी भी तरह इस्तेमाल करना चाहते हैं। Http://jqueryui.com/download –

+0

पर एक नज़र डालें, मैंने उस दृष्टिकोण को भी आजमाया है लेकिन यह मुझे एक ही त्रुटि देता है। – kartikq

+0

क्या आप वाकई जावास्क्रिप्ट फ़ाइलों को शामिल कर रहे हैं जो फाइलों के आधिकारिक रिलीज संस्करण हैं और अनुकूलित नहीं किए गए हैं (अनजाने में कुछ तोड़ना)? –

उत्तर

36

मैं दोनों सार्वजनिक गूगल संस्करणों का उपयोग करके और विरासत (1.6) jQuery यूआई साइट से संस्करण को डाउनलोड करने और मैन्युअल रूप से फ़ाइलें शामिल कर आपकी त्रुटि नकल करने की कोशिश की। इसके कारण काम करने के लिए कोई समस्या नहीं हुई (http://jsbin.com/uloqi)।

तो, की अपनी समस्या को हल कर सकते हैं के बाद एक अर्थ यह है कि: फ़ायरफ़ॉक्स प्रत्येक जे एस फ़ाइल को सत्यापित करने के लिए

  1. Firebug जैसे किसी उपकरण का उपयोग शामिल किया जा रहा है।
  2. सुनिश्चित करें कि पृष्ठ पर कोई अन्य जेएस नहीं है जो त्रुटि उत्पन्न कर सकता है।
  3. सत्यापित करें कि आपके पास डाउनलोड की गई फ़ाइलों के सही संस्करण हैं।

मुझे नहीं पता कि आपके द्वारा चिपकाए गए कोड के बाद से आपको और क्या कहना है, जब सही फाइलों के साथ जोड़ा गया है, पूरी तरह से काम करता है।

+9

डौग, मेरे पास मेरे पृष्ठ में एक और जेएस फ़ाइल शामिल थी जो इसका कारण बन रही थी। मुझे और कैफीन पीना है। – kartikq

+6

+1 2. वें बिंदु ने मेरी मदद की। 2X jquery libs उसी दस्तावेज़ में जोड़ा गया। – karlisup

+1

सुनिश्चित करें कि आपने संवाद घटक को शामिल न करने के लिए अपने jQuery UI के निर्माण को अनुकूलित नहीं किया है। – Twilite

4

मैं ऊपर वर्णित (messagebox केवल एक बार खुलता है) एक के रूप में ठीक उसी समस्या थी। मेरी समस्या यह थी कि संदेशबॉक्स में एचटीएमएल भी jquery लोड करता है। चूंकि मुझे इसकी आवश्यकता नहीं है, इसलिए मैं इसे बिना किसी समस्या के हटा सकता हूं। अन्यथा आपको समस्या को थोड़ा आगे पिन करना पड़ सकता है।

2

कुछ परिस्थितियों में आपको यह त्रुटि प्राप्त कर सकते हैं multible और विभिन्न JQuery संस्करण एक ही समय में लोड किए गए हैं।

मेरे मामले में मेरे पास एक एएसपी पृष्ठ है जो एक मास्टर का उपयोग करता है। मेरे गुरु JQuery 1.4.2.min मेरे aspx पृष्ठ सहित था मैं JQuery 1.7.2.min

जब JQuery कार्यों एक नियंत्रण से कहा जाता था, यह जिसके बारे में JQuery तो भी है कि स्क्रिप्ट सकता है, हालांकि उपयोग करने के लिए उलझन में मिला शामिल बताएं कि JQuery लोड किया गया था (यह JQuery संस्करण प्रदर्शित कर सकता है), यह किसी भी JQuery कार्यों को खोजने में विफल रहा।

जब मैंने अपनी एएसपीएक्स फ़ाइल से अपने स्थानीय JQuery 1.7.2.min समावेशन को हटा दिया, और 1.4 मीटर .min से 1.7.2.min तक अपना माटर अपडेट किया, तो समस्या दूर हो गई।

2

डौग नेइनर द्वारा उत्तर वास्तव में मदद की। मेरे मामले में थोड़ा और अधिक जटिल हो गया था, लेकिन अभी भी एक ही बात करने के लिए आता है:

मैं जो इस तरह पृष्ठ बी लोड करता है पृष्ठ A से एक संवाद खोला:

$('#MyDiv').dialog({ 
    autoOpen: false 
}) 
$("#MyDiv").load("PageB.aspx", function() { 
    $("#MyDiv").dialog("open"); 
}); 

समस्या यह है कि दोनों पृष्ठ ए और बी था jQuery शामिल सावधान रहें: यदि आप किसी अन्य पृष्ठ को एक संवाद में लोड कर रहे हैं, तो उसे एक ही जेएस को शामिल करने की आवश्यकता नहीं है।

0

जैसा कि पहले ही समझाया गया है, आप शायद मौजूदा पुस्तकालयों को ओवरराइड करते हैं।

इससे निपटने का एक तरीका यह सुनिश्चित करना है कि सही फाइलें लोड हों।

एक और तरीका संवाद में संवाद और सामग्री के बीच एक आईफ्रेम डालना है। आईफ़्रेम का उपयोग ब्राउज़र द्वारा अपनी अलग-अलग स्क्रिप्ट के साथ एक अलग पृष्ठ के रूप में किया जाता है। तो iframe "शीर्ष पर" सामग्री की लिपियों, iframe के नीचे "संवाद" के संवाद की लिपियों से अलग होगी। अन्यथा

var confirmDialog = $("#dialog-confirm").dialog({ 
    autoOpen: false 
}); 
$("#test").click(function() { 
    confirmDialog.dialog('open'); 
}); 

सब कुछ मैं

.dialog() is not a function error
आशा इस मदद से कोशिश में विफल रहा करने के बाद,:

0

मैं सिर्फ इस मुद्दे भी और एकमात्र समाधान है कि काम करता है मेरे लिए की तरह संवाद संदर्भ को बचाने के लिए किया गया है।

+0

इसे संदर्भ के रूप में सहेजने के लिए मेरे लिए काम नहीं किया :( – Anupam

0

मुझे एक ही समस्या थी। मेरा एक jQuery UI अद्यतन से 1.11.4 से 1.12.1 तक स्वयं को लगाया गया था। मैंने NuGet और NuGet का उपयोग करके अपग्रेड स्थापित किया, मेरे प्रोजेक्ट से पुराने 1.11.4 संदर्भ को हटा दिया लेकिन कभी भी नया प्रोजेक्ट संदर्भ नहीं जोड़ा।

स्थानीय रूप से चल रहे एप्लिकेशन ने बहुत अच्छा काम किया, लेकिन इसे तैनात करते समय नई 1.12.1 फ़ाइल ने इसे प्रकाशित नहीं किया। मैं उम्मीद करता हूं कि इससे किसी की मदद होगी।

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