2010-03-30 26 views
14

मुझे समस्या है कि जब मैं सबमिट बटन पर क्लिक करके फॉर्म जमा करने का प्रयास कर रहा हूं, तो इसके दौरान अनुरोध पोस्ट करने में कुछ समय लगता है यदि मैं फिर से सबमिट बटन पर क्लिक करता हूं तो यह फिर से सभी पैरामीटर और पैरामीटर भेजे जाएंगे दो बार, तीन बार .... इतने पर।सबमिट पर एकाधिक क्लिक करने के बाद केवल एक बार फ़ॉर्म सबमिट कैसे करें?

मुझे नहीं पता कि सबमिट बटन को सीमित कैसे करें ताकि फॉर्म दो बार सबमिट नहीं किया जाना चाहिए। मुझे लगता है कि जब मैं सबमिट पर क्लिक करता हूं तो मुझे सबमिट बटन को अक्षम करना होगा ताकि उपयोगकर्ता इसे फिर से क्लिक नहीं कर सके, क्या यह करने के लिए यह सही दृष्टिकोण है?

उत्तर

26
<input type="submit" onclick="this.disabled = true" value="Save"/> 
+0

अच्छा समाधान का उपयोग करें। :) – Plynx

+0

आश्चर्यजनक रूप से प्रत्यक्ष। –

+1

यह विधि क्रोम 16 –

4

मैं सादगी और Zoidberg's answer की स्पष्टता से प्यार है।

लेकिन अगर आप (कुछ लोगों को मार्कअप और कोड पूरी तरह से अलग रखना पसंद करते हैं) मार्कअप के बजाय कोड का उपयोग कर कि हैंडलर सेट अप हुक करना चाहते हैं, यहाँ यह Prototype उपयोग कर रहा है:

document.observe('dom:loaded', pageLoad); 
function pageLoad() { 
    var btn; 

    btn = $('idOfButton'); // Or using other ways to get the button reference 
    btn.observe('click', disableOnClick); 
} 
function disableOnClick() { 
    this.disabled = true; 
} 

या आप गुमनाम कार्यों इस्तेमाल कर सकते हैं (मैं उनमें से एक प्रशंसक नहीं हूँ):

document.observe('dom:loaded', function() { 
    var btn; 

    btn = $('idOfButton'); // Or using other ways to get the button reference 
    btn.observe('click', function() { 
     this.disabled = true; 
    }); 
}); 

jQuery का उपयोग कर बहुत समान दिखेगा कर रहा।

+1

में काम नहीं करती है अच्छा जवाब, कई विकल्प हमेशा अच्छे होते हैं, खासकर जब वे एक ठोस पुस्तकालय शामिल करते हैं। – Zoidberg

30

बटन को अक्षम करना एक समाधान है, लेकिन संभावित रूप से कीबोर्ड उपयोगकर्ताओं के लिए एक समस्या उत्पन्न होती है जो सिर्फ एक फॉर्म सबमिट करने के लिए एंटर दबाते हैं। इस परिदृश्य में, बटन अक्षम नहीं किया जाएगा। यकीन है कि आग विधि इतनी तरह onsubmit घटना को संभालने के लिए होगा:

(function() { 
    var allowSubmit = true; 
    frm.onsubmit = function() { 
     if (allowSubmit) 
      allowSubmit = false; 
     else 
      return false; 
    } 
})(); 

(अच्छी तरह से, के रूप में यकीन है कि आग के रूप में आप जे एस के साथ प्राप्त कर सकते हैं वैसे भी सक्षम)। आप बटन को अंतिम उपयोगकर्ता को दृश्य पुष्टि के रूप में अक्षम कर सकते हैं कि फ़ॉर्म केवल एक बार सबमिट भी हो सकता है।

+6

सच है, मुझे लगता है कि अगर कोई माउस को बड़े पैमाने पर हिट कर सकता है, तो वे आसानी से एंटर बटन दबा सकते हैं – Zoidberg

+1

बहुत सही। एक संदेश दिखाना भी अच्छा है कि जानकारी भेजी जा रही है (उदाहरण के लिए, सबमिट होने के बाद सबमिट बटन के बगल में)। –

0

में disable_with पर एक नज़र मैं जानता हूँ कि यह पुराना नहीं है तो, बल्कि अक्षम से, बस बटन छुपाने के लिए, आप क्लिक नहीं कर सकते क्या आप नहीं कर सकते देख।

<input type="submit" onclick="this.style.visibility = 'hidden'" value="Save"/> 
+0

इससे समस्या यह है कि इससे कोई फर्क नहीं पड़ता कि इससे कोई फर्क नहीं पड़ता, भले ही फॉर्म सत्यापन हो, बटन गायब हो जाता है: p – jQwierdy

0

यदि आप उपयोग प्रपत्र सबमिट/PHP में पोस्ट कर रहे हैं तो यह कोड

onclick="disableMe();" in type="submit" 

इसके सबमिट बटन कोड

<input name="bt2" type="submit" onclick="disableMe();" id="bt2" style="width:50px;height:30px; margin-left:30px;" value="Select" /> 
संबंधित मुद्दे