2017-02-03 7 views
8

मेरे पास एक रेल डिवाइज़ फ़ॉर्म है जिसमें जावास्क्रिप्ट सत्यापन है। जब उपयोगकर्ता सबमिट करता है, सत्यापन कार्य करता है और उपयोगकर्ता को उस फॉर्म पर फिर से ध्यान दिया जाता है जहां उन्हें होना चाहिए।रेल-डेटा-अक्षम-पुनः सक्षम करने वाला बटन

हालांकि, रेल डेटा-अक्षम-का उपयोग करता है ताकि बटन को क्लिक करने के बाद बटन को अक्षम किया जा सके, इसलिए प्रमाणीकरण के बाद उपयोगकर्ता अब सबमिट नहीं कर सकता है। मैं बटन को अक्षम करने के दौरान कुछ प्रकार के श्रोता सेट अप करने की कोशिश कर रहा हूं, डबल क्लिक को रोकने के लिए थोड़ी देर प्रतीक्षा करें, फिर बटन को फिर से सक्षम करें।

मैं कोड के कई पुनरावृत्तियों की कोशिश की है, नवीनतम मैंने कोशिश की थी:

 $(document.on("ajax:success", "new_supplier", function() { 
     var button; 

     button = $(this).find('.btn-sign-up'); 
     setTimeout((function() { return button.disabled=false; }),1); 


     }); 

लेकिन कोई सफलता मिली है, पहले मैं सिर्फ बटन को एक श्रोता जोड़ने की कोशिश की:

 var button = document.getElementById('btn-sign-up'); 
     button.addEventListener("click", enableButton); 

     function enableButton() { 
      if (button.disabled) 
      { 
       window.setTimeout(enable(), 2000); 
      } 
     } 


     function enable() { 
      button.disabled=false; 
     } 

लेकिन इस असफल रहा क्योंकि यह फ़ंक्शन (रेल ईथर में छुपा) से पहले भाग गया था जिसने बटन को अक्षम कर दिया था, इसलिए काम नहीं किया।

<%= f.submit "Create my account", class: 'btn-sign-up', id: 'btn-sign-up' %> 

किसी को भी मेरी मदद कर सकते यहाँ से बाहर:

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

उत्तर

0

मैं इसे काफी हल करने में कामयाब रहा। मैं बस में चला गया और हटाया डेटा अक्षम-साथ कोड के साथ बटन से:

$('#my-button').removeAttr('data-disable-with'); 

और फिर पुनः स्थापित विशेषता जब प्रपत्र डुप्लिकेट बनाने से डबल क्लिक से बचने के लिए प्रस्तुत होने के लिए तैयार किया गया था।

+1

यह पटरियों 5 हैं कि यह अतिरिक्त था? बस एक घंटे डिबगिंग बिताया, "कौन मेरा बदनाम सबमिट बटन बदल रहा है!" यूजेएस का कितना कठोर ऐसा लगता है कि यह काम करता है। – Mike

+2

डिफ़ॉल्ट व्यवहार को लागू करने के साधन के रूप में जेएस के साथ लोड के बाद पृष्ठ को मैनिपुलेट करना एक बुरा अभ्यास है। – Archonic

28

यह व्यवहार रेल 5 में बदल दिया गया था, अब यह डिफ़ॉल्ट रूप से सबमिट करने में अक्षम है।

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

config.action_view.automatically_disable_submit_tag = false 

या, यह विशिष्ट बटन के लिए तदर्थ ऐसा करने के लिए, सबमिट बटन

data: { disable_with: false } 
+0

स्रोत: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-submit_tag – mastaBlasta

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