2010-06-22 17 views
5

मेरे पास ASP.NET साइट पर भुगतान के साथ फॉर्म हैं, जब उपयोगकर्ता एएसपी पर क्लिक करता है: बटन कभी-कभी वह कुछ बार सबमिट करता है। मैं वर्तमान एएसपी.नेट साइट को नुकसान पहुंचाए बिना इस कार्यक्षमता को अक्षम करना चाहता हूं (इसके द्वारा मेरा मतलब कोई फंतासी jQuery नहीं है, जब तक कि यह बहुत बुनियादी नहीं है और एएसपी.NET अंतर्निहित सत्यापन में हस्तक्षेप नहीं करेगा)एएसपी.नेट सबमिट करने पर बटन को कैसे अक्षम करें?

धन्यवाद !!! यदि इससे भी काम नहीं कर रहा है, तो आप कर सकते हैं

onClientClick="if(Page_ClientValidate()){this.disabled=true;}" 

:

onClientClick="this.disabled=true;" 

आप भी इस के साथ मुहम्मद से दृष्टिकोण का उपयोग कर सकते हैं:

+0

पहले क्लिक करें आप इसे बाद हमेशा अक्षम करना चाहते हैं:

यह दृष्टिकोण काम करता है? – Samiksha

+0

@ सैमिक्षा, मुझे फॉर्म सबमिट करने के बाद अक्षम करने की आवश्यकता है क्योंकि अगर मैं पहले क्लिक के बाद अक्षम करता हूं तो एक बार मैं एएसपी.NET सत्यापन के साथ डेटा को सत्यापित करने के लिए क्लिक करता हूं। – eugeneK

+0

मैंने अपना जवाब अपडेट कर लिया है, कृपया अभी जांचें। अक्षम बटन से पहले आपको क्या करना है, आपको पेज_ClientValidate() –

उत्तर

9

आप आसानी से ग्राहक के पक्ष में बटन पर ऐसा कर सकते हैं बटन को अक्षम करने से पहले पोस्टबैक शुरू करें:

onClientClick="if(Page_ClientValidate()){__doPostBack;this.disabled=true;}" 
+0

@ ओडेड, बहुत स्मार्ट समाधान की जांच करने की आवश्यकता है, जैसे ... –

+0

@ ओडेड, कूल धन्यवाद! – eugeneK

+1

@ ओडेड, एएसपी.NET प्रमाणीकरण के बाद क्रोम में काम नहीं करता है। – eugeneK

1

आपके लिए जा सकते हैं। यह वास्तव में अच्छा है, क्योंकि यह पूरी यूई को अवरुद्ध करता है, न केवल बटन - ताकि उपयोगकर्ता किसी अन्य बटन पर क्लिक न कर सके (उदाहरण के लिए आप सहेजना चाहते हैं ... कुछ समय लेता है ... उपयोगकर्ता इस समय हटाए जाने पर क्लिक करता है)

+0

उस दृष्टिकोण के साथ समस्या है। एएसपी दो चीजें हैं: बटन करता है। 1. एएसपी.NET सत्यापनकर्ताओं का उपयोग कर जेजे सत्यापन। 2. ट्रिगरिंग ऑनक्लिक = "" इस स्क्रिप्ट को क्लाइंट पर निष्पादित किया जा सकता है, इस प्रकार जेएस सत्यापन विफल हो जाएगा। – eugeneK

+0

1. मुझे नहीं लगता कि यह एक समस्या होगी। आप क्लाइंट-सत्यापन-फ़ंक्शन को फिर से परिभाषित कर सकते हैं और सत्यापन के बाद अवरोध निष्पादित कर सकते हैं ठीक है। 2. ईश्वर की खातिर आप क्लाइंट-साइड पर सर्वर-ईवेंट कैसे ट्रिगर कर सकते हैं ?? सारांश: आपको अधिक जानकारी और कुछ कोड देना चाहिए (कोड-बैक और मार्कअप और अंतिम एचटीएमएल)। –

+0

वैसे - एक और दृष्टिकोण है: क्यों फॉर्म के सबमिट-हैंडलर को फिर से परिभाषित नहीं करें। यदि फॉर्म अंतिम उदाहरण (जैसे आपका ग्राहक-सत्यापन) द्वारा सबमिट किया जाता है तो आप ui को अवरुद्ध कर सकते हैं, है ना? –

2

एक स्थिर विधि बनाएं:

/// <summary> 
/// Disable the button on submit. Remember to set up the validationGroup property if there is more than one form/submit 
/// </summary> 
/// <param name="objButton">The submit button object</param> 
public static void disableSubmitButton(Button objButton) 
{ 
    objButton.CausesValidation = false; 
    string validationGroup = objButton.ValidationGroup; 
    if (string.IsNullOrEmpty(validationGroup)) 
     objButton.Attributes.Add("onclick", "if (Page_ClientValidate()) {this.value=\"Processing...\";this.disabled=true;" + objButton.Page.ClientScript.GetPostBackEventReference(objButton, "").ToString() + "}"); 
    else 
     objButton.Attributes.Add("onclick", "if (Page_ClientValidate(\"" + validationGroup + "\")) {this.value=\"Processing...\";this.disabled=true;" + objButton.Page.ClientScript.GetPostBackEventReference(objButton, "").ToString() + "}"); 
} 

एक फ़ॉर्म बनाएं और अपने रूप में एक बटन रखने के (validationGroup प्रॉपर्टी सेट अप करने अगर वहाँ एक से अधिक फार्म याद रखें/पेश करें):

<asp:Button runat="server" ID="btnSubmit" OnClick="btnSubmit_Click" /> 

इसे पृष्ठ लोड में कॉल करें:

CommonFunctions.disableSubmitButton(btnSubmit); 
2
onClientClick="if(Page_ClientValidate()){__doPostBack;this.disabled=true;}" 
UseSubmitBehavior="false" 
2

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन सभी जवाब कुछ परिस्थितियों में असफल। मुख्य रूप से आप ब्राउज़र में "पृष्ठ_ClientValidate परिभाषित नहीं किया गया" त्रुटि प्राप्त करने का जोखिम लेते हैं।

public static void DisableSubmitButton(Button button) 
{ 
    button.Attributes.Add("onclick", "this.disabled=true;" + button.Page.ClientScript.GetPostBackEventReference(button, String.Empty)); 
} 
+0

मेरी स्थिति में अन्य उत्तरों में से कोई भी काम नहीं किया, लेकिन इससे कोई समस्या नहीं हुई। धन्यवाद। –

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