ruby on rails - Observer Field: Autofill field when selecting another field -


यहाँ मेरा मौजूदा कोड है:

  & lt;% form_for (@match) do | f | & Gt%; & Lt;% = f.error_messages% & gt; & LT; fieldset & gt; & Lt; p & gt; & LT; लेबल & gt; नाम & lt; / लेबल & gt; & Lt;% = f.text_field (: नाम)% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; लेबल & gt; या ईमेल पता & lt; / लेबल & gt; & Lt;% = f.text_field (: ईमेल)% & gt; & Lt; / p & gt; & Lt; / fieldset & gt; & Lt; p & gt; & LT; लेबल & gt; अंक: & lt; / लेबल & gt; & Lt;% = f.text_field (: अंक)% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt;% = f.submit 'मेल'% & gt; & Lt; / p & gt; & Lt;% end% & gt;  

जब उपयोगकर्ता ईमेल फ़ील्ड का चयन करता है, तो मैं अंक को 50 के साथ ऑप्टोप्पुलेट करना चाहता हूं और फ़ील्ड को अयोग्य बनाने के लिए। मैं ऐसा कैसे करूँ?

मैं मान रहा हूँ कि आप प्रोटोटाइप (जावास्क्रिप्ट फ़्रेमवर्क) का प्रयोग कर सकते हैं, रेल का उपयोग कर रहे हैं यह ओवरकिल हो सकता है, लेकिन आप फोकस ईवेंट देखने के लिए उस क्षेत्र में एक पर्यवेक्षक जोड़ सकते हैं। वहां से, एक फ़ंक्शन कॉल करें जो अंक फ़ील्ड के मान को 50 पर सेट करता है और फिर अंक फ़ील्ड केवल पढ़ने के लिए (या फ़ील्ड को अक्षम कर देता है) बनाता है। ऐसा कुछ:

  // फ़ील्ड पर पर्यवेक्षक जोड़ें जब DOM लोड करता है document.observe ("dom: loaded", function () {// वस्तु के साथ आईडी का निरीक्षण करें "match_email" फ़ोकस इवेंट $ ('मैच_मेल') के लिए। निरीक्षण करें ('फ़ोकस', प्रत्युत्तरटोएईमेलफोकस);}); // कॉल करने के लिए फ़ंक्शन जब उपयोगकर्ता ई-मेल फ़ील्ड पर प्रतिक्रिया करता है तो जवाब ई-मेल फोकस (ईवेंट) {// ID = "match_points" के साथ ऑब्जेक्ट खोजें और मान = 50 $ ('match_points') निर्धारित करें। Value = 50; // आईडी = "मैच_पॉइंट" के साथ ऑब्जेक्ट खोजें और इसे केवल $ ('मैच_पॉइंट्स') पढ़ें। ReadOnly = true; // केवल पढ़ने के लिए सेट करने के बजाय, आप फ़ील्ड को $ // ('match_points') का उपयोग करके अक्षम कर सकते हैं। अक्षम करें (); }  

यहां अधिक जानकारी दी गई है, जब आपको इसे संशोधित करने की आवश्यकता होती है।

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

यदि आप प्रोटोटाइप का उपयोग नहीं करना चाहते हैं, तो आप केवल ईमेल फ़ील्ड पर onFocus विशेषता को जोड़ सकते हैं और कॉल कर सकते हैं ऊपर एक के समान कार्य (respondToEmailFocus) चूंकि आप प्रोटोटाइप का उपयोग नहीं कर रहे हैं, इसलिए आपको अंक क्षेत्र को खोजने के लिए document.getElementById ('match_points') के बजाय $ ('match_points') का उपयोग करना होगा।


Comments