2013-02-11 80 views
5

अपलोड बटन क्लिक करने के बाद, मेरे पास फ़ाइल अपलोड सिस्टम है, फ़ाइल को फिर AJAX के माध्यम से अपलोड किया जाता है। फ़ाइल अपलोड होने पर मैं "छवियों का चयन करें" बटन पर क्लिक फ़ंक्शन को अक्षम करना चाहता हूं। वर्तमान में इस फाइल चयन बटन पर क्लिक समारोह है:फिर क्लिक करें फिर से सक्षम करें क्लिक करें jQuery

$(document).ready(function() { 
    $("#file-button").click(function() { 
     $('#file').trigger('click'); 
    }); 
}); 

कि ठीक काम करता है, लेकिन मैं क्लिक समारोह जब पुन: सक्षम XmlHttpRequest की प्रगति चरण में क्लिक समारोह को निष्क्रिय करने, और फिर चाहते हैं मुझे सर्वर से 200 प्रतिक्रिया मिलती है। मैंने bind() और unbind() की कोशिश की है और यह क्रोम में ठीक काम करता है, लेकिन फ़ायरफ़ॉक्स में, अपलोड के दौरान, बटन क्लिक नहीं किया जा सकता है, जो मैं चाहता हूं, और फिर सर्वर से प्रतिक्रिया मिलने के बाद बटन फिर से सक्षम हो जाता है, लेकिन फ़ायरफ़ॉक्स में दो फ़ाइल-चयन संवाद विंडो एक ही समय में खुलती हैं। यह उपरोक्त फ़ंक्शन के कारण है, और मुझे bind() का उपयोग करके फ़ंक्शन को फिर से बाध्य करना है। क्या किसी को सक्षम करने के तरीके पर कोई सुझाव है, फिर क्लिक ईवेंट के कोड (फ़ंक्शन) को दोबारा दर्ज किए बिना बटन को अक्षम करें।

कुछ इस तरह बेहतर होगा:

$('#file-button').disable(); 
$('#file-button').enable(); 

मैं on() और off() की कोशिश की है और वे या तो काम करने के लिए नहीं है।

उत्तर

7

समाधान एरिक

करने के लिए धन्यवाद मैं निम्नलिखित करने के लिए अपने आरंभिक क्लिक समारोह बदल दिया है:

$(document).ready(function() { 
    $("#file-button").click(function() { 
     if ($('#file-button').attr('disabled') == "disabled") { 
     return false; 
     } 
     else { 
      $('#file').trigger('click'); 
     } 
    }); 
}); 

और मैं बटन

$('#file-button').attr('disabled','disabled'); 

निष्क्रिय करने के लिए निम्नलिखित सेट और इसे पुनः सक्षम करने के लिए:

$('#file-button').removeAttr('disabled'); 
+1

मैंने इसका भी उपयोग किया लेकिन पाया कि 'else' अनावश्यक/अनावश्यक था। –

+1

'# file' बटन' पर क्लिक करने पर मुझे '# file' पर क्लिक ईवेंट ट्रिगर करने की आवश्यकता थी। तो बाकी बयान आवश्यक था। – ramo

+0

यह अब और काम नहीं करता है, कृपया इस लिंक का संदर्भ लें: http://stackoverflow.com/questions/15122526/disable-button-in-jquery –

0

Attr jQuery फ़ंक्शन का प्रयास करें।

$('#file-button').attr('disabled','disabled'); 
$('#file-button').removeAttr('disabled');

परीक्षण कोड

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() 
    { 
     $("#file-button").click(function(e) 
     { 
      e.preventDefault(); 
      $(this).attr('disabled','disabled'); 
      return false; 
     }); 
    }); 

</script> 

<input type="button" id="file-button" value="ClickMe" /> 
+0

यह काम नहीं करता है। मेरे जावास्क्रिप्ट कोड में क्लिक फ़ंक्शन अक्षम विशेषता को ओवरराइड कर रहा है क्योंकि यह क्लिक फ़ंक्शन को सुन रहा है। – ramo

+0

अद्यतन उत्तर पर एक नज़र डालें .. –

+0

आपका अद्यतन उत्तर न तो काम करता है। [कोडपेन] (http://codepen.io/anon/pen/onIFp) – ramo

0

आप बटन को निष्क्रिय करने के क्रम में इनपुट बटन उल्लेख करने के लिए है,

कुछ की तरह नीचे

$("input[type=submit]").prob('disabled', true); 
    $("inpur[type=submit]").prob('disabled', false); 
+0

यह काम नहीं करता है। मेरे जावास्क्रिप्ट कोड में क्लिक फ़ंक्शन अक्षम विशेषता को ओवरराइड कर रहा है क्योंकि यह क्लिक फ़ंक्शन को सुन रहा है। और जिस तरह से यह सबमिट बटन नहीं है, यह फ़ाइल चयन बटन है जो सिर्फ '

+1

क्या आपने प्रोब के साथ प्रयास किया ......? – EnterJQ

+0

क्षमा करें, क्या मैंने कोशिश की? – ramo

3

jQuery $.prop() का उपयोग कर बटन अक्षम करें कार्य:

$("input[type=submit]").prop('disabled', true); 

क्लिक हैंडलर के लिए एक सशर्त जोड़े जाँच करने के लिए करता है, तो बटन अक्षम है:

$("#file-button").click(function() { 
    if (!$(this).is(':disabled')) { 
    $('#file').trigger('click'); 
    } 
}); 

पर बाद में बटन को पुन: सक्षम:

$("input[type=submit]").prop('disabled', false); 

या आप हो सकता है यदि कोई फॉर्म शामिल है, तो क्लिक के बजाय सबमिट ईवेंट का उपयोग करने में सक्षम हो:

-
$("#whatever-your-form-is").on('submit', function() { 
    $('#file').trigger('click'); 
}); 
+0

मुझे लगता है कि इस लाइन के साथ आपको तर्कसंगत गलती है 'अगर ($ (यह) .is (': disabled ')) {' मैं यह सुनिश्चित करने के लिए कैसे जांचूं कि यह अक्षम है, यह गलत है, सत्य नहीं है। – ramo

+0

आप सही हैं। इसे ठीक करने के लिए संपादित किया गया। बस एक '!' जोड़ें: 'अगर (! $ (यह) .is (': अक्षम ')) ' –

+0

मैंने इसे अपने कोड में थोड़ा बदलाव करने के साथ तय किया है, मेरे प्रश्न में समाधान देखें। एरिक विचार के लिए धन्यवाद! – ramo

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

  • कोई संबंधित समस्या नहीं^_^