ExtJS: validitychange - исключить скрытые поля ввода из проверки правильности - PullRequest
0 голосов
/ 16 марта 2019

У меня есть форма с двумя полями ввода 'test1' и 'test2' и одним полем со списком. Я хочу проверить эту форму, поля ввода должны быть не emtpy. Поэтому я использую конфиг 'allowBlank: false' и метод контроллера 'onFormValidityChanged'. Это отлично работает.

Теперь я скрываю поле ввода 'test2', когда динамически меняю значение в поле со списком с помощью метода контроллера 'onChangeCombo'. Также я установил config 'allowBlank: true' для поля ввода 'test2'. Но моя форма недействительна, когда скрытое поле ввода 'test2' пусто.

Как я могу исключить скрытое поле ввода из проверки достоверности?

Я использую ExtJS версии 6.6.

Спасибо за подсказки, Томас

Вид:

    items : [{
        xtype : ' formpanel',
        trackResetOnLoad : true,            
        layout : {
            type : 'vbox',
            align : 'stretch'
        },
        items : [
        {
            xtype : ' textfield',
            name : 'test1'
            itemId : 'test1',
            allowBlank : false,
            fieldLabel : 'test1'
        },
        {
            xtype : ' combobox',
            name : 'combo',
            itemId : 'combo',
            store: myStore,
            listeners : {
                change : 'onChangeCombo'
            }
        },            
        {
            xtype : ' textfield',
            name : 'test2'
            itemId : 'test2',
            allowBlank : false,
            fieldLabel : 'test2'
        }],
        listeners : {
            validitychange : 'onFormValidityChanged'
        }
    }];

Контроллер:

onFormValidityChanged : function(form, valid) {
    var win, button;
    win = form.owner.up('window');
    button = win.down('[xtype=button]');
    button.setDisabled(!valid);
}, 

onChangeCombo : function(combobox) {
    var win, test2;
    win = combobox.up('window');
    test2 = win.down('textfield[itemId=test2]');
    test2.hide();
    test2.allowBlank = true;
}

Ответы [ 2 ]

1 голос
/ 16 марта 2019

, чтобы отключить проверку, просто отключите этот скрытый ввод.

test2.disable();

У меня тоже есть предложение:

  • использовать test2.setAllowBlank (true) вместо test2.allowBlank = true

  • не используйте ссылки, такие как win.down (и т. Д.), Проверьте параметры ViewController со ссылкой и методом поиска

0 голосов
/ 20 марта 2019

Предложение Норбека

test2.disable()

не дает решения.Я не знаю, почему ...

Я не последовал предложению dh117 formBind.Я решил эту проблему следующим образом:

test2 = win('textfield[itemId=test2]');
win.remove(test2);

Спасибо за ваши советы, а также за дальнейшие советы, Томас

...