2010-10-29 11 views
8

मैं समझता हूं कि पृष्ठ बना रहा है और AJAX कॉल करते समय कर्सर को व्यस्त करने के लिए जावास्क्रिप्ट का उपयोग कैसे करें।पेज लोड हो रहा है, जबकि कर्सर को व्यस्त में बदल रहा है

हालांकि मेरे पास एक ऐसा पृष्ठ है जो AJAX का उपयोग नहीं करता है, यह पृष्ठ को पुनः लोड करने के लिए पोस्टबैक का उपयोग करता है। हालांकि लोड बल्कि डेटा गहन है और इसमें कुछ सेकंड लगते हैं। इस समय के दौरान उपयोगकर्ता अभी भी पेज पर क्लिक कर सकते हैं। मैं कर्सर को "प्रतीक्षा" में बदलना चाहता हूं ताकि उपयोगकर्ता पृष्ठ पर क्लिक करने की कोशिश न करे।

उदाहरण के लिए मेरे पास दो ड्रॉपडाउन हैं जो पोस्टबैक का कारण बनते हैं। मैं एक चयन करता हूं और पृष्ठ 3 सेकंड के लिए लोड करता है। जबकि यह लोड होता है, मैं कर्सर को प्रतीक्षा करने के लिए चालू करना चाहता हूं ताकि उपयोगकर्ता पृष्ठ को फिर से लोड होने तक दूसरे ड्रॉपडाउन पर चयन करने का प्रयास न करे।

क्या यह संभव है?

अतिरिक्त जानकारी:

<form id="form1" runat="server"> 
<table width = "100%" bgcolor="White"> 
<tr><td> 
<h3><asp:ContentPlaceHolder id="MAIN" runat="server"></asp:ContentPlaceHolder></h3> 
</tr></td> 
</table> 
</form> 
<script type="text/javascript"> 
    function cursorwait(e) { 
     document.body.style.cursor = 'wait'; 
    } 

    var fm = document.getElementById('<% =form1.ClientID %>'); 
    if (fm.addEventListener) { 
     fm.addEventListener('submit', cursorwait, false); 
    } 
    else { 
     fm.attachEvent('onsubmit', cursorwait); 
    } 
</script> 

और फिर एक पेज मास्टर पृष्ठ का उपयोग करता है:

<asp:Content ID="Content1" ContentPlaceHolderID="MAIN" Runat="Server"> 
<table runat=server id="tb_simple_search_table" cellpadding = 0 cellspacing = 0> 
<tr><td> 
    <asp:DropDownList... 
    <asp:DropDownList... 
</td></tr> 
</table> 
</asp:content> 
+0

यह उन Dropdownlists कि Postbacks जिसके दौरान मैं इंतजार कर्सर चाहते कर रहे है। – kralco626

+0

मेरा मतलब है कि, वास्तव में पृष्ठ लोड हो रहा है, यह अच्छा होगा अगर मैं प्रतीक्षा कर्सर प्राप्त कर सकूं, भले ही यह क्यों इंतजार कर रहा हो ... – kralco626

उत्तर

5

आप फॉर्म के submit ईवेंट में हैंडलर जोड़ सकते हैं।

सीएसएस

.wait, .wait * { cursor: wait; } 

जावास्क्रिप्ट हमारे विधि

function cursorwait(e) { 
    document.body.className = 'wait'; 
} 

var fm = document.getElementById('<% =form1.ClientID %>'); 
var proxySubmit = fm.onsubmit; 

fm.onsubmit = function() { 
    cursorwait(); 
    if (proxySubmit) { 
     proxySubmit.call(fm); 
    } 
} 
यहाँ

हम सुनिश्चित कर रहे हैं कहा जाता हो जाता है submit() बूंद की तरह js में कहा जाता है, जब यह एक पोस्टबैक का कारण बनता है नीचे है। इसे जमा करने के फॉर्म के किसी भी अन्य उदाहरण को भी पकड़ना चाहिए।

+0

मुझे यह विचार पसंद है। मैंने स्क्रिप्ट को अपने मास्टर पेज में रखा। हालांकि मुझे एक त्रुटि मिली जब लाइन: fm.addEventListener कह रही है कि ऑब्जेक्ट की उम्मीद है। मेरे पास मेरे मास्टर पेज में फॉर्म 1 नामक एक फॉर्म है लेकिन मेरे बच्चे पृष्ठों में नहीं। मैं इसे कैसे काम करूंगा? – kralco626

+0

मैंने var fm = $ ('# form1') का उपयोग करने का प्रयास किया; लेकिन मुझे लाइन fm.attachEvent ('onsubmit', कर्सरवाइट) पर एक त्रुटि मिली; कह रही है कि यह opbject इस का समर्थन नहीं करता है। – kralco626

+0

क्या आप पृष्ठ पर फॉर्म के बाद स्क्रिप्ट रख रहे हैं? जिस भी रूप में आप चिंतित हैं उस नियंत्रण के नाम का उपयोग करें। '$ ('# form1') 'एक jquery ऑब्जेक्ट प्राप्त करता है, न कि डोम तत्व। – lincolnk

5

मैं नहीं कर रहा हूँ (मेरी स्थापना के सरलीकृत संस्करण)

मैं एक masterpage है निश्चित है कि यह सबसे अच्छा या सबसे प्रभावी तरीका है, लेकिन यदि आप कर्सर को बदलना चाहते हैं तो यह दिखाने के लिए कि पृष्ठ बटन के बाद व्यस्त है, निम्नलिखित jQuery पर क्लिक करें, चाल चलाना चाहिए:

$(document).ready(function() { 
    $(".button").click(function() { 
     $("*").css("cursor", "wait"); 
    }); 
}); 
+0

बहुत अच्छा समाधान, दुर्भाग्य से मेरे पास समस्या नहीं है। मेरे पास सिर्फ एक बटन नहीं है जो पोस्टबैक का कारण बन सकता है, मेरे पास कई ऑब्जेक्ट और कई घटनाएं हैं। जब मैं JQuery का उपयोग कर रहा हूं तो मैं इसे ध्यान में रखूंगा। – kralco626

1

बस प्रत्येक बटन एक वर्ग देते हैं, कहते हैं कि "WaitOnClick", तो बस इसे लिखने: $(".WaitOnClick").click(function() {

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

  • कोई संबंधित समस्या नहीं^_^