extjs remove / прочитано текстовое поле для формирования ошибки?

У меня есть форма, где у меня есть радиогруппа «да», «нет».

Когда я нажимаю «да» Я добавил текстовое поле в набор полей формы с параметром конфигурации: allowBlank: false. Итак, есть проверка на местах. Когда я нажимаю «нет», все поля удаляются из набора полей, присутствующего в форме.

Проблема в том, когда активна проверка, поэтому, когда вы заходите внутрь текстового поля и щелкаете от него, не вводя в него никаких символов, и я нажимаю радиокнопку «нет», текстовое поле исчезает и выдает следующую ошибку, когда я улавливаю это:

Element.alignToXY с элементом, который не существует

Когда я затем нажимаю радиокнопку «да», текстовое поле отображается снова, НО я получаю сообщение об ошибке:

TypeError: dom is undefined

Я мог поймать эти ошибки и ничего не сделать с ними, потому что на самом деле форма кажется работающей, текстовые поля были добавлены и удалены, как и должно, есть только ошибки, и мне не нравится концепция этого. Кто-нибудь знает, почему возникает эта ошибка и как от нее избавиться, чтобы она работала на 100% правильно?

Вот пример кода:

var radiogroup = new Ext.form.RadioGroup({
    fieldLabel: 'Radio group test',
    allowBlank: false,
    anchor: '85%',
    items: [{
        boxLabel: 'Yes',
        name: 'radio',
        inputValue: 1
    }, {
        boxLabel: 'No',
        name: 'radio',
        inputValue: 2
    }],
    listeners: {
        change: function (rg, radio) {

            if (radio.inputValue == 1) {
                var textfield_test = new Ext.form.TextField({
                    fieldLabel: 'Test',
                    allowBlank: false,
                    id: 'test',
                    name: 'test',
                    anchor: '85%',
                    width: 320,
                    helpText: 'test'
                });
                textfield_fieldset.insert(textfield_fieldset.items.length, textfield_test);
            } else {
                try {
                    txt_test = Ext.getCmp('test');
                    if (txt_test) {
                        textfield_fieldset.remove(txt_test);
                    }
                    textfield_fieldset.doLayout();
                } catch (err) {
                    alert(err);
                }
            }
        }
    }
});
5
задан Darin Kolev 21 August 2013 в 23:38
поделиться