2010-07-09 13 views
6

Ben eşdeğer elde etmek istiyorum: giriş kutusu radyo düğmesine ilişkilidirExt Js Radyo düğmesi extjs ise

<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', 
          }) 

         ] 
); 

"On" etiketinin yanında bir Ext.form.TextField olması istiyorum.

RadioGroup'a bir Ext.form.TextField eklemeyi denedim, ancak göstermeyecek (onun bir Radyo olmadığı için varsayıldığından) ve Radio nesnesine öğe ekleyemiyorum.

Tavsiye edilen herhangi bir tavsiye, teşekkürler.

cevap

0

RadioButton sınıfını geçersiz kılmadığınızdan ve oluşturma mantığını değiştirmediğiniz sürece bunun mümkün olduğunu düşünmüyorum (ve bir metin alanının önerdiğiniz şekilde doğru bir şekilde oluşturulmasını sağlayacağından daha karmaşık olacağını düşünüyorum). Daha iyi bir yaklaşım, radyo ve metin alanını iki ayrı alan olarak eklemektir ve bunları programsal olarak birbirine bağlar. Ext 3.2'de bunu kolayca yapmak için bir CompositeField kullanabilirsiniz. Telsizin işleyicisinde, odağı, ilişkili metin kutusuna veya ihtiyaç duyduğunuz başka bir mantığa ayarlayabilirsiniz.

2

sonra RadioGroup üzerine olay bir TextField oluşturmak işlemek ve

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" 
     }); 
    } 
    } 
}); 

Bu TextField ile çalışır doğruladı ettik elemana uygulamak, boxLabel bir <input/> elemanı ekleyin ve ben olmasa denedim, DateField veya ComboBox ile de çalışmalıdır. Ayrıca denenmemiş, ancak bir <input/> oluşturmak yerine, bir kapsayıcı öğesi oluşturabilir ve bu öğeyi TextField ve renderTo oluşturabilirsiniz.

+0

Bunu hangi tarayıcılarda test ettiniz? Firefox'ta, radyo öğesi metin alanından odak toplar ve yazarak (radyodan çıkana kadar) yazmanıza izin vermez. IE'de "fieldLabel null veya bir nesne değil" alırsınız. Cevabımı oylayan kişi siz olduğunuzdan emin değilim, ama bunu yapmanın mümkün olmadığını söylemedim, düşündüğünüzden daha karmaşık olacağını söyledim. Bence bu cevap benim amacımı kanıtlıyor. –

+0

Firefox 3.6'da denedim. Odağın çalınması, etiketin tıklatıldığı ve RadioGroup'da etiket tıklamalarını engellemeye çalışan bir işleyici olduğundan kaynaklanıyor. Cevabı düzgün çalışmasını sağlamak için düzenledim. Size oy verdim, üzgünüm SO için yeniyim, bunun büyük bir etkisi olup olmadığını anlamıyorum, sadece cevabınızla anlaşmazlık olduğunu düşündüm. Onu geri almaya çalıştım ama izin vermedi. –

+0

"Kural" yoktur, ancak aşağı oylama aslında reddettiğiniz kişiden itibarı kaldırır, amaç normal olarak bir cevabın konu dışı olduğunu veya aktif olarak yanıltıcı olduğunu belirtir. Tipik olarak, birileri yasal olarak yardım sunmaya çalışırken, en iyi olduğunu düşündüğünüz bir cevap olmasa bile, bu yanıtı düşürmek için gerçekten bir neden değildir (bunun yerine, belki de cevabın neden en iyi olmadığını düşündüğünüze yorum yapabilir, böylece Bu). Belki başka güzel bir insan gelip beni oraya çağırmak için bana oy verecek ... :) –