2008-09-08 16 views
7

पर आकस्मिक डबल क्लिकिंग को रोकना मेरे पास कुछ नियंत्रण हैं जो एएसपी.NET बटन से प्राप्त होते हैं और 'ऑनसर्वरक्लिक' का उपयोग करते हैं।बटन

यदि उपयोगकर्ता दो बार क्लिक करता है, तो बटन दो सर्वर साइड ईवेंट चलाता है। मेरे द्वारा इसे कैसे रोका जा सकता है?

मैंने जावास्क्रिप्ट के माध्यम से क्लिक के बाद "this.disabled = 'true'" सेट करने का प्रयास किया (लेकिन 'ऑनक्लिक' विशेषता में), लेकिन यह पहले पोस्टबैक को भी अवरुद्ध करता है।

उत्तर

13

पोस्टबैक पर नियंत्रण अक्षम करने के लिए यह उदाहरण देखें। यह आपको वह करने में मदद कर सकता है जो आप प्राप्त करने की कोशिश कर रहे हैं।

http://encosia.com/2007/04/17/disable-a-button-control-during-postback/

+0

धन्यवाद ...मैं उस तकनीक – juan

+0

द्वारा आवश्यक मैन्युअल पोस्टबैक संदर्भ खो रहा था दुर्भाग्य से, उपयोग करने के लिए UseSubmitBehavior को बदलने का अर्थ है कि आपका फॉर्म अब जावास्क्रिप्ट के बिना उपयोगकर्ताओं का समर्थन नहीं करेगा। – NightOwl888

+0

लगता है कि साइट डाउन है, क्रोम रिपोर्ट करता है कि साइट में मैलवेयर है – SimplyInk

1

किसी और ने यहां कुछ दिन पहले यह कहा था, और मैं सहमत हूं - को जावास्क्रिप्ट का उपयोग को अक्षम करने के बजाय बटन को छुपाएं; आप अपनी जगह पर एक "स्पिनर" छवि दिखा सकते हैं, जो उपयोगकर्ता को यह जानने देता है कि क्या हो रहा है।

+1

मुझे विश्वास नहीं है कि मुझे बटन गायब होने का विचार पसंद है। जब तक कोई अन्य (अक्षम बटन) अपना स्थान नहीं ले लेता। यह अंतिम उपयोगकर्ता को भ्रमित कर सकता है ... नहीं? –

+0

मैं रॉब से सहमत हूं, मुझे स्पिनर के विचार के लिए – juan

+0

+1 गायब करने वाले बटन पसंद नहीं हैं - उपयोगकर्ता को दिखा रहा है कि कुछ चल रहा है। अगर वह पूरी तरह से आग्रह करता है तो मैं उसे फिर से सबमिट करने के लिए संभावना/"नियंत्रण" छोड़ दूंगा। – giraff

1
छिपने के बजाय

, क्या मैंने किया है जावास्क्रिप्ट का उपयोग करने की अदला-बदली बटन है। पहले बटन के क्लिक पर एक और ग्रिड आउट छवि दिखाएं।

2

आप पोस्टबैक पर अक्षम बटन को दिखाना नहीं चाहते हैं। आप यह सुनिश्चित करना चाहते हैं कि वे गलती से दो बार सबमिट न करें। इसलिए सर्वर-साइड के परिणामस्वरूप बटन को अक्षम या छिपाना खेल में पहले से ही बहुत देर हो चुकी है। इस बिंदु से दूसरा अनुरोध पहले से ही इस तरह से है। आपको या तो जावास्क्रिप्ट के साथ ऐसा करने की ज़रूरत है या सुनिश्चित करें कि आपका सर्वर साइड कोड दो बार नहीं चलेगा।

2

और एक UpdatePanel के मामले एक FormView-खाका मैं निम्नलिखित दृष्टिकोण का उपयोग अंदर एक बटन में:

<script type="text/javascript"> 
    // Using that prm reference, hook _initializeRequest 
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequestBuchung); 

    // Abfangen von Mehrfachklicks auf Buttons für asynchrone Postbacks im Updatepanel 
    function InitializeRequestBuchung(sender, args) { 
     var arrButtonIds = ["ButtonInsert", "ButtonUpdate"]; 

     // Get a reference to the PageRequestManager. 
     var prm = Sys.WebForms.PageRequestManager.getInstance(); 
     if (prm.get_isInAsyncPostBack() & jQuery.inArray(args.get_postBackElement().id, arrButtonIds) > -1) { 
      args.set_cancel(true); 
     } 
    } 
</script> 

यह एक निम्नलिखित पोस्टबैक रद्द वर्तमान में एक async पोस्टबैक अभी भी सक्रिय है, तो। अच्छी तरह से काम।

1

बटन प्रॉपर्टी UseSubmitBehavior को गलत पर सेट करें। फिर एक ऑनक्लिएंटक्लिक फ़ंक्शन बनाएं जो बटन को अक्षम करता है। वह कुछ इस तरह दिखेगा:

<script type="text/javascript"> 
    function disableFunctn(button){ 
     button.disabled = true; 
    } 
</script> 
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="disableFunctn(this);"/> 

सबसे तेजी से सबसे सस्ता तरीका:

<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="this.disabled=true;"/> 
0

तुम भी उदाहरण के लिए कोशिश कर सकते हैं btnSave.Enable = झूठी; जब बटन मारा जाता है और क्लिक इवेंट दिनचर्या में बटन के प्रसंस्करण से पहले किया जाता है। यदि आपको इसे सक्षम करने की अनुमति देने के लिए इसे रीसेट करने की आवश्यकता है, तो एक अलग बटन है जो पुन: उपयोग के लिए बटन रीसेट करता है।

एक और तरीका सत्यापन के साथ बटन सेट करना है ताकि उपयोगकर्ता से पूछा जा सके कि वे सहेजना चाहते हैं, तो इसे दोनों बार पॉप अप करना चाहिए।

फिर भी एक और तरीका पहली घटना को ध्वजांकित करना होगा, फिर दूसरे या बाद के उपयोग को सत्यापित करने के लिए दूसरे के लिए पॉपअप सेट करना होगा।