Расширение Переключатель Js с входным текстом в его маркировке

В ExtJs я хотел бы достигнуть эквивалента:

<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 к RadioGroup, но это не покажет (поскольку я принимаю, потому что не Радио) и я не могу добавить объекты к Радио-объекту.

Любой ценивший совет, спасибо.

6
задан babadbee 9 July 2010 в 12:46
поделиться

2 ответа

Добавьте элемент в boxLabel , затем в событии рендеринга 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, и хотя я не пробовал его, он также должен работать с DateField или ComboBox. Также не тестировалось, но вместо создания вы можете создать элемент контейнера и создать TextField и renderTo этот элемент.

2
ответ дан 17 December 2019 в 20:28
поделиться

Я не думаю, что это возможно, если вы не переопределите класс RadioButton и не измените его логику рендеринга (и я думаю, что это будет сложнее, чем вы думаете, правильно отрисовать текстовое поле так, как вы предложили). Лучшим подходом было бы просто добавить радио и текстовое поле как два отдельных поля и связать их программно. В Ext 3.2 для этого можно было легко использовать CompositeField. В обработчике радио fn вы можете установить фокус на связанное с ним текстовое поле или любую другую логику, которая вам понадобится.

0
ответ дан 17 December 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: