2010-07-09 31 views
6

ExtJs में मैं के बराबर प्राप्त करने के लिए करना चाहते हैं:Ext जे एस रेडियो बटन

<input type="radio"><label><input type="text"></label> 

कहाँ इनपुट बॉक्स रेडियो बटन को जुड़ा हुआ है।

new Ext.form.RadioGroup({ 
         id:"alerts", 

         items: [ 
          new Ext.form.Radio({ 
           boxLabel:'Now', 

          }), 
          new Ext.form.Radio({ 
           boxLabel:'On', 
          }) 

         ] 
); 

मैं "ऑन" लेबल को इसके आगे Ext.form.TextField रखना चाहता हूं।

मैंने रेडियो ग्रुप में Ext.form.TextField जोड़ने का प्रयास किया है, लेकिन यह नहीं दिखाएगा (जैसा कि मुझे लगता है क्योंकि यह रेडियो नहीं है) और मैं रेडियो ऑब्जेक्ट में आइटम जोड़ने में असमर्थ हूं।

किसी भी सलाह को धन्यवाद, धन्यवाद।

उत्तर

0

मुझे नहीं लगता कि जब तक आप रेडियोबटन कक्षा को ओवरराइड नहीं करते हैं और इसके प्रतिपादन तर्क को बदलते हैं (और मुझे लगता है कि आपके द्वारा प्रस्तावित तरीके से टेक्स्टफील्ड सही ढंग से प्रस्तुत करने के बारे में सोचने के लिए यह अधिक जटिल होगा)। एक बेहतर तरीका रेडियो और टेक्स्टफील्ड को दो अलग-अलग क्षेत्रों के रूप में जोड़ने और उन्हें प्रोग्रामेटिक रूप से लिंक करना होगा। Ext 3.2 में आप इसे आसानी से करने के लिए एक कंपोजिटफिल्ड का उपयोग कर सकते हैं। रेडियो के हैंडलर एफएन में आप अपने संबंधित टेक्स्टबॉक्स पर ध्यान केंद्रित कर सकते हैं या जो भी अन्य तर्क आपको चाहिए।

2

boxLabel में एक <input/> तत्व जोड़ कर RadioGroup पर प्रस्तुत करना घटना एक TextField बना सकते हैं और उस तत्व

new Ext.form.RadioGroup({ 
    id:"alerts", 
    items: [ 
    {boxLabel: 'Now',}, 
    {boxLabel: 'On <input id="on_date" type="text"/>'}, // contains <input/> id is "on_date" 
    ], 
    listeners: { 
    change: function() { 
     // really, check if "on" was clicked 
     if(true) { 
     Ext.getCmp('on_date_field').focus(); 
     } else { 
     // otherwise, disable the field? 
     } 
    }, 
    render: function() { 
     new Ext.form.TextField({ 
     id: 'on_date_field', 
     applyTo: 'on_date', // apply textfield to element whose id is "on_date" 
     }); 
    } 
    } 
}); 

मैंने पुष्टि की है कि इस TextField साथ काम करता है उसे लागू करने के लिए और नहीं, हालांकि मेरे पास है कोशिश की, इसे डेटफिल्ड या कॉम्बोबॉक्स के साथ भी काम करना चाहिए। इसके अलावा अवांछित, लेकिन <input/> बनाने के बजाय, आप एक कंटेनर तत्व बना सकते हैं और टेक्स्टफ़िल्ल्ड और renderTo उस तत्व को बना सकते हैं।

+0

आपने किस ब्राउजर में इसका परीक्षण किया? फ़ायरफ़ॉक्स में, रेडियो तत्व टेक्स्ट फ़ील्ड से फ़ोकस चुराता है और इसमें टाइपिंग की अनुमति नहीं देता है (जब तक आप रेडियो से टैब नहीं करते)। आईई में, आपको "फ़ील्ड लेबल शून्य या ऑब्जेक्ट नहीं मिलता है"। निश्चित नहीं है कि आप मेरे उत्तर देने वाले व्यक्ति हैं, लेकिन मैंने यह नहीं कहा कि ऐसा करना संभव नहीं होगा, मैंने कहा कि यह आपके विचार से कहीं अधिक जटिल होगा। मुझे लगता है कि यह जवाब मेरे बिंदु को साबित करता है। –

+0

मैंने फ़ायरफ़ॉक्स 3.6 में इसे आजमाया। फोकस का चोरी इसलिए है क्योंकि लेबल पर क्लिक किया जा रहा है और रेडियो ग्रुप पर एक हैंडलर है जो लेबल क्लिक को अवरुद्ध करने का प्रयास करता है। मैंने जवाब को सही तरीके से काम करने के लिए संपादित किया। मैंने आपको वोट दिया था, माफ करना, मैं एसओ के लिए नया हूं, मुझे समझ में नहीं आता कि इसका कोई बड़ा प्रभाव है या नहीं, मैंने सोचा कि मैं सिर्फ आपके उत्तर से असहमति का संकेत दे रहा हूं। मैंने इसे वापस लेने की कोशिश की लेकिन यह मुझे नहीं जाने देगी। –

+0

कोई "नियम" नहीं है लेकिन चूंकि डाउन-वोटिंग वास्तव में आपके द्वारा डाउनवोट किए गए व्यक्ति से प्रतिष्ठा को हटा देती है, इसलिए आम तौर पर यह इंगित करना है कि कोई जवाब ऑफ-विषय है या सक्रिय रूप से भ्रामक है। आम तौर पर जब कोई वैध रूप से सहायता प्रदान करने का प्रयास कर रहा है, भले ही यह कोई जवाब न हो, आपको लगता है कि यह सबसे अच्छा है, यह वास्तव में डाउनवोट करने का कारण नहीं है (इसके बजाय, शायद आपको लगता है कि उत्तर क्यों अच्छा नहीं है, इस प्रकार एक उपयोगी वार्तालाप शुरू करना, जैसे कि यह वाला)। शायद कुछ अन्य अच्छे व्यक्ति साथ आएंगे और मुझे इसे कॉल करने के लिए भी वोट देंगे ... :) –

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