2011-12-12 10 views
7

मेरे पास एक बटन के लिए निम्न ऑनक्लिक ईवेंट है। एक बार यह घटना ftonired है मैं बटन को अक्षम करना चाहता हूँ। क्या कोई मुझे यह समझने में मदद कर सकता है कि इसे कैसे किया जाए?1 क्लिक के बाद बटन को कैसे अक्षम करें

कोड कोड मैं बटनक्लिक घटना पर निष्पादित करता हूं।

protected void Button3_Click(object sender, EventArgs e) 
{ 

    if (Session["login"] != null && Session["db"] != null) 
    { 

     digit b = new digit(); 
     String digitformed = b.formdigit(this.DropDownList1, this.TextBox1, this.TextBox2); 

     chekcount c = new chekcount(); 
     int count = c.getmaxcountforjud_no(digitformed); 
     int addtocount = count + 1; 

     String name = Session["login"].ToString(); 
     String databs = Session["db"].ToString(); 
     String complex_name = name + databs; 

     if (DropDownList2.SelectedItem.Text != "New") 
     { 
      update u = new update(); 
      u.update1(this.Editor1, digitformed, this.TextBox3, complex_name, name, this.DropDownList2); 
      Response.Write(@"<script language='javascript'>alert('Updated')</script>"); 

     } 
     else 
     { 
      save d = new save(); 
      d.dosave(this.Editor1, addtocount, digitformed, this.TextBox3, complex_name, name); 
      Response.Write(@"<script language='javascript'>alert('Saved')</script>"); 

     } 
    } 
    else 
    { 
     Response.Redirect("log.aspx"); 
    } 
} 

यहां बटन है जिसे मैं अक्षम करना चाहता हूं।

<asp:Button ID="Button3" runat="server" Text="Save" onclick="Button3_Click" 
        Visible="False" /> 
+4

क्लिक हैंडलर में बटन के सक्रिय संपत्ति के लिए झूठी सेट करें: यहाँ एक उदाहरण है। – adatapost

+1

जब आप इस बटन को अक्षम करना चाहते हैं, तो आप स्पष्ट हो सकते हैं? क्लाइंट या सर्वर पोस्टबैक के बाद –

उत्तर

12

आप की कोशिश की है ?:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    Button3.Enabled = false; 
    //rest of code 
} 
+3

यह उपयोगकर्ता को उनके ब्राउज़र में बटन को अक्षम नहीं करेगा, फिर भी वे बार-बार असहनीय बटन पर क्लिक करने में सक्षम होंगे। – JDPeckham

2

देखें कोड में चिह्नित करता है, तो आप से jQuery का उपयोग करके इसे क्या करना चाहते हैं

protected void Button3_Click(object sender, EventArgs e) 
{ 

    ** if (Session["Clicked"] == null) 
     Session["Clicked"] = true; 
    else 
    { 
     Button3.Enabled = false; 
     return; 
    } ** 


    if (Session["login"] != null && Session["db"] != null) 
    { 

     digit b = new digit(); 
     String digitformed = b.formdigit(this.DropDownList1, this.TextBox1, this.TextBox2); 

     chekcount c = new chekcount(); 
     int count = c.getmaxcountforjud_no(digitformed); 
     int addtocount = count + 1; 

     String name = Session["login"].ToString(); 
     String databs = Session["db"].ToString(); 
     String complex_name = name + databs; 

     if (DropDownList2.SelectedItem.Text != "New") 
     { 
      update u = new update(); 
      u.update1(this.Editor1, digitformed, this.TextBox3, complex_name, name, this.DropDownList2); 
      Response.Write(@"<script language='javascript'>alert('Updated')</script>"); 

     } 
     else 
     { 
      save d = new save(); 
      d.dosave(this.Editor1, addtocount, digitformed, this.TextBox3, complex_name, name); 
      Response.Write(@"<script language='javascript'>alert('Saved')</script>"); 

     } 
    } 
    else 
    { 
     Response.Redirect("log.aspx"); 
    } 
} 
1

$('#button3').attr("disabled", true); 
+0

यह $ ('# बटन 3') नहीं होना चाहिए। Attr ("अक्षम", "अक्षम")? मुझे लगता है कि यह फ़ायरफ़ॉक्स में काम करेगा लेकिन आईई नहीं ... – Dave

+0

@ डेव: - यह सभी ब्राउज़र में काम करेगा –

4
<asp:Button onclick="Button3_Click" ID="Button3" runat="server" Text="Save" 
OnClientClick="this.disabled = true; this.value = 'please wait ..';" 
UseSubmitBehavior="false"  /> 
28

बटन नियंत्रण के OnClientClick और UseSubmitBehavior गुणों का उपयोग करें।

<asp:Button runat="server" ID="BtnSubmit" 
    OnClientClick="this.disabled = true; this.value = 'Submit in progress...';" 
    UseSubmitBehavior="false" 
    OnClick="BtnSubmit_Click" 
    Text="Click to Submit" /> 

OnClientClick आपको क्लाइंट साइड ऑनक्लिक स्क्रिप्ट जोड़ने की अनुमति देता है। इस मामले में, जावास्क्रिप्ट बटन तत्व को अक्षम कर देगा और इसके टेक्स्ट मान को प्रगति संदेश में बदल देगा। जब पोस्टबैक पूरा हो जाता है, तो नया प्रस्तुत पृष्ठ किसी भी अतिरिक्त काम के बिना बटन को प्रारंभिक स्थिति वापस कर देगा।

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

__doPostBack('BtnSubmit','') 

Redered HTML:

<input type="button" name="BtnSubmit" 
    onclick="this.disabled = true; this.value = 'Submitting...';__doPostBack('BtnSubmit','')" 
    value="Submit Me!" id="BtnSubmit" /> 

यह आपको वांछित व्यवहार देना चाहिए।

से: http://encosia.com/disable-a-button-control-during-postback/ क्रेडिट: डेव वार्ड (ट्विटर: @Encosia)

+0

यह सबसे अच्छा जवाब होना चाहिए क्योंकि पोस्ट वापस पोस्ट के बाद सक्षम होने के बाद वापस लौटाएगा –

2
///count number of button click 
    var counter = 0; 
    function countclickbutton() { 
     counter++; 
     if (counter > 1) { 
      alert("proessing..please wait."); 
//do not allow to again click 
      return false; 
     } 
     else { 

      return true; 
     } 
    } 

कॉल बटन

5

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

को अपनी कक्षा में एक विधि जोड़ें:

static void DisableButtonDuringPostback(Page page, Button control) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("this.disabled = true;"); 
    sb.Append(page.ClientScript.GetPostBackEventReference(control, control.ID.ToString())); 
    sb.Append(";"); 

    control.Attributes.Add("onclick", sb.ToString()); 

} 

Page_Load में जोड़ने

DisableButtonDuringPostback(this.Page, Button3); 
0

यह एक पुरानी पोस्ट है, लेकिन मुझे नहीं लगता कि यह पूरी तरह से जवाब दिया गया है या नहीं।

सबसे पहले, एएसपी में।नेट वेबफॉर्म, आप वेब सर्वर के लिए HTTP GET अनुरोध सबमिट करते हैं जो आपके अनुरोध को संभालने और ब्राउज़र के लिए क्लाइंट-साइड HTML कोड आउटपुट करने के लिए आउटपुट करता है।

चूंकि आप सर्वर-साइड कंट्रोल के साथ बातचीत कर रहे हैं, गुणों के लिए छिपे हुए VIEWSTATE इनपुट फ़ील्ड के भीतर मान शामिल हैं (जैसे Enabled के लिए बूलियन)।

जब आप किसी बटन पर क्लिक करते हैं, तो यह उसी पृष्ठ पर वेब सर्वर पर HTTP POST अनुरोध भेजता है। यही कारण है कि जब आप बटन पर क्लिक करते हैं तो Page_Load ईवेंट निकाल दिया जाता है।

एक बार HTTP POST अनुरोध का निपटारा करने के बाद, यह ब्राउज़र के लिए फिर से प्रस्तुत करने के लिए HTML कोड वापस कर देगा। इस कारण से, अगर आप अपने Page_Load घटना में निम्न कोड है:

if (Page.IsPostBack) { Button3.Enabled = false; } 

यह उपयोगकर्ता है कि यह अक्षम हो गया है जब तक HTTP POST अनुरोध प्रबंधित किया गया है और अद्यतन क्लाइंट-साइड कोड लौटे करने के लिए प्रदर्शित नहीं करेगा।

प्रारंभिक प्रश्न से, ऐसा लगता है कि सर्वर को प्रतिक्रिया वापस करने में कई सेकंड लग रहे थे, इस प्रकार बटन को बार-बार क्लिक करते समय कई पोस्टबैक ईवेंट निकाल दिए जा सकते थे।

आपकी समस्या को हल करने के लिए एक सरल (लेकिन कष्टप्रद) तरीका नियमित HTML button जावास्क्रिप्ट में function निष्पादित करना होगा जो इसे अक्षम करता है और सर्वर-साइड नियंत्रण की ऑनक्लिक घटना को सक्रिय करता है। इसके साथ समस्या तब होगी जब HTTP POST अनुरोध एक प्रतिक्रिया देता है, यह नियमित HTML button सक्षम होने के रूप में प्रस्तुत करेगा। इसे हल करने के लिए, आप इसे ऑनलाइन एएसपी.NET कोड का उपयोग करके जावास्क्रिप्ट में अक्षम कर सकते हैं।

.aspx फ़ाइल

<button id="clientButton" onclick="javascript:update();" /> 
<asp:Button ID="serverButton" OnClick="serverButton_OnClick" runat="server" /> 
<script type="text/javascript"> 
<% if (Page.IsPostBack) { %> 
document.getElementById("clientButton").enabled = false; 
<% } %> 
function update() { 
    document.getElementById("clientButton").enabled = false; 
    document.getElementById("<%= serverButton.ClientID %>").click(); 
} 
</script> 
<style type="text/css"> 
#<%= serverButton.ClientID %> { 
    visibility: hidden; 
    display: none; 
} 
</style> 



.ASPX.CS फ़ाइल

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     // Triggered when serverButton has 'javascript:click()' triggered 
    } 
}