2010-08-27 20 views
12

मैं एएसपीनेट वेबफॉर्म का उपयोग कर रहा हूं; मैं एक फॉर्म जमा करना चाहता हूं और बटन को तब तक अक्षम रखना चाहता हूं जब तक कि यह मेरे डेटाबेस में सहेजा न जाए, ठीक उसी तरह Stackoverflow। कोई उपाय?प्रपत्र सबमिट होने के बाद बटन को कैसे अक्षम करें?

protected void Lb_Save_Click(object sender, EventArgs e) 
{ 
    //disable my button 
     //Do a DB insert 
    //enable my button 
} 

संपादित करें:

मैं एक क्लाइंट-साइड सत्यापन पहले करूँगा इसलिए मैं अपने बटन वहाँ अक्षम होने लेकिन मैं इसे निष्क्रिय करने के लिए एक बार onclick समारोह शुरू होता है चाहता हूँ नहीं करना चाहती। आशा है कि आप सभी को मेरा अंक मिल जाएगा।

मैं भी एएसपी के लिए ऐसा करना चाहता हूं: लिंकबटन लेकिन मुझे नहीं पता कि फ़ायरफ़ॉक्स इसके लिए कैसे व्यवहार करता है। चूंकि लिंकबटन को एंकर के रूप में प्रस्तुत किया जाएगा, मैं इसे कैसे अक्षम कर सकता हूं?

दोस्तों आपको मेरा प्रश्न नहीं मिला।

पोस्टबैक के दौरान एएसपी: बटन को कैसे अक्षम करें? (jQuery/जावास्क्रिप्ट में नहीं)

+0

क्या आपको वास्तव में ऐसा करने के लिए कोड देखने की आवश्यकता है? जब आप अपने प्रश्न पोस्ट करते हैं तो आप क्लाइंट के पेज से अजाक्स अनुरोध भेजते हैं जिसमें सभी जानकारी होती है जिसमें इसे सहेजने की आवश्यकता होती है, और इसे (अनुरोध) टाइमआउट 0 होना चाहिए, इसलिए यह अनंत तक अवरुद्ध हो जाता है (या आप इसे बड़े होने के लिए सेट कर सकते हैं , 10 सेकंड की तरह), और सफल अनुरोध पर हैंडलर भी जोड़ें जो बटन को सक्षम करेगा। सर्वर की तरफ, जब तक आप सभी डेटा को डेटाबेस में सहेजते हैं, तब तक प्रतिक्रिया रखें, और तब ठीक से प्रतिक्रिया दें या जो भी क्लाइंट पर अजाक्स थ्रेड फिर से शुरू करे और SUCCESS क्लाइंट को कॉल करें। आप इसे jQuery के साथ कर सकते हैं यह देखना चाहते हैं कि कैसे? – Cipi

+1

@Cipi: शायद आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए: पी – BoltClock

+0

ठीक है अब मैं आपका संपादन देखता हूं ... dont -1 मेरा जवाब मैंने सोचा था कि आप जेएस को ऐसा करना चाहते हैं ... – Cipi

उत्तर

7

यह submit() पर अक्षम कर देता है, यह कभी नहीं इसे फिर से सक्षम बनाता है क्योंकि आप पुनः निर्देशित कर रहे हैं। हालांकि, अगर आप सत्यापन के कुछ प्रकार करना चाहता था तुम सिर्फ

$("#yourForm").submit(function(e) { 
    $("#yourButton").attr('disabled','disabled'); 
    if (whateverValidation) { 
     e.preventDefault(); 
     $("#yourButton").removeAttr('disabled'); 
    } 
}); 
+0

@Robert मेरे संपादन को देखें –

+0

आप एकाधिक सबमिशन को रोकने के लिए तुरंत बटन क्यों अक्षम नहीं करना चाहते हैं? – Robert

+0

@Robert ya बिल्कुल –

2

संक्षिप्त उत्तर: जावास्क्रिप्ट।

लंबे समय तक जवाब:

$('#formid').submit(function() { 
    $('#buttonid').hide(); 
$('#disabledbuttonimageid').show(); 
}); 
+0

यह मेरे एएसपी को रखेगा: बटन अक्षम मेरे pstback खत्म होने तक .. –

+0

@ मुरली - एएसपी.नेट के लिए, आपको नाम/आईडी को ध्यान में रखना होगा कि ढांचा क्या करता है। इसका अर्थ यह है कि आपको अपने jQuery चयनकर्ता में एक अलग वाक्यविन्यास का उपयोग करना होगा। यहां दिखाया गया वाक्यविन्यास "बटनिड" की आईडी के साथ नियंत्रण से मेल खाता है। हालांकि, ढांचा इसे रनटाइम पर "some_big_long_string_buttonid" में बदल देगा, इसलिए आपका चयनकर्ता "बटन [id $ = 'buttonid']" जैसा नियंत्रण प्राप्त करेगा, जिसका नियंत्रण "बटन" में आईडी * समाप्त होता है *। – GalacticCowboy

0

ठीक है, यहाँ कुछ कोड है कि आप क्या करना है पर एक विचार दे सकते हैं करना होगा। अक्षम वर्ग जो बटन या जो कुछ भी की उचित सीएसएस शैलियों तो यह अक्षम प्रतीत होता है सेट हो जाएगा ...

ग्राहक के पक्ष जावा स्क्रिप्ट

function doRequest(MY_DATA_THAT_I_WANT_TO_SEND) 
{ 
    $.ajax({ 
     type: "GET", 
     url: "saving_page.aspx?data="+MY_DATA_THAT_I_WANT_TO_SEND, 
     timeout: 10000, 
     beforeSend: function() 
     {  
      $("#button").toggleClass("DISSABLED"); 
     }, 
     complete: function(XMLHttpRequest, textStatus) 
     { 
      //Or you can remove success handler and let complete hander enables 
      //the button, so it gets enabled if there was an error or there was success 
      //$("#button").toggleClass("DISSABLED");   
     },        
     success: function(data) 
     {            

      if(data == "OK") $("#button").toggleClass("DISSABLED");      
     } 

    });   
}; 

सर्वर साइड सीएस

protected void Page_Load(object sender, EventArgs e) 
{ 
    string data = Request.Params.Get("data"); 
    saveDataToDataBase(data); 

    //Sleep some more... 
    Thread.Sleep(3000); 

    //Send ok 
    Response.Write("OK"); 
    Response.End(); 
} 
2

कैसे की आवश्यकता होगी ? वह एक जादू है।

अब

, अगर आप जावास्क्रिप्ट नहीं करना चाहती:

  1. पोस्टबैक पर, बटन को अक्षम करें।
  2. कोई वास्तविक काम न करें, लेकिन सत्र परिवर्तक को यह निर्धारित करने के लिए सेट करें कि किस काम की आवश्यकता है।
  3. तत्काल रीफ्रेश करने के लिए HTML मेटा टैग सेट करें।
  4. रिटर्न - ब्राउज़र तुरंत पृष्ठ को रीफ्रेश करेगा।
  5. जब आप अभी अनुरोध करते हैं, तो आप सत्र var की जांच करते हैं, और काम करते हैं।

अन्य तरीके हो सकते हैं, लेकिन स्पष्ट रूप से वे सभी अजीब होने के लिए गोनिग हैं, आप जावास्क्रिप्ट क्यों नहीं चाहते हैं?

+0

अगर मैं जावास्क्रिप्ट का उपयोग करता हूं तो मैं अपना रिकॉर्ड अक्षम नहीं कर सकता जब तक मैं जावास्क्रिप्ट का उपयोग नहीं करता ... –

+0

यह पहले से ही अन्य लोगों द्वारा उत्तर दिया गया है। – queen3

2

वेब फ़ॉर्म (जो एमवीसी नहीं है) के साथ ऐसा करने का एकमात्र तरीका मूल बटन को छिपाना और अक्षम बटन या किसी अन्य बटन की एक तस्वीर के साथ प्रतिस्थापित करना है। यदि आप वास्तव में बटन को अक्षम करते हैं .net की जावास्क्रिप्ट सबमिट नहीं करेगा।

(हाँ, मुझे पता है कि आप "हैक" कर सकते हैं।नेट जावास्क्रिप्ट, लेकिन वास्तव में, क्या यह कोई बेहतर है?)

यह करने के लिए जावास्क्रिप्ट यह आसान है कि आपको यह पता चल जाए कि आपको क्या करना है - यदि आप कुछ कोड देखना चाहते हैं तो मुझे इसे खोदने में सक्षम होना चाहिए - बस टिप्पणियों में पूछो।

एनबी: एमवीसी अन्य उत्तरों में कोड के रूप में सरल होना चाहिए जो अजाक्स कॉल से पहले बटन को अक्षम कर दें। तो एमवीसी का उपयोग कर रहा है ताकि उन्हें आपके द्वारा अनुभव की जा रही समस्याएं न हों।

-1

कृपया कोड का पालन करने का प्रयास करें।

jQuery ('# mybuttonid') पर क्लिक करें (function() { jQuery (यह) .attr ('अक्षम', विकलांग '); })।
+1

क्या आपने यह कोशिश की है? यह –

+0

काम नहीं करता हां, मैंने कोशिश की है और यह मेरे लिए ठीक काम करता है। यदि आपको इसके साथ कोई समस्या हो रही है, तो कृपया मुझे अपना कोड स्निपेट प्रदान करें। –

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