Проверка формы ExtJs - PullRequest
       2

Проверка формы ExtJs

5 голосов
/ 07 декабря 2010

У меня есть эта форма в ExtJs. Если field1 не пусто, field2 не должно быть пустым. Но он не работает, хотя слушатель стреляет.

 {
    xtype: 'panel',
    title: 'title 1',
    items: [{
        xtype: 'fieldset',
        title: 'field A',
        items: [{
            xtype: 'textfield',
            fieldLabel: 'Line 1',
            id: 'field1',
            listeners: {
                change: function(f, new_val) {
                    if (new_val) {
                        //alert("change" + new_val);
                        f.field2.allowBlank = false;
                    } else {
                        f.field1.allowBlank = true;
                    }
                }
            }
            code for field2
        }]
    }]
}

Ответы [ 2 ]

5 голосов
/ 07 декабря 2010

Частичный ответ:

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

Тем не менее, я удивлен, что в API нет метода setAllowBlank ().Я буду продолжать осматриваться и исправлять этот ответ, если смогу найти способ сделать это.

РЕДАКТИРОВАТЬ : Похоже, ваш метод должен работать, из моего чтения исходного кода TextField.Поэтому вопрос в том, почему не так.

EDIT2 : Возможно, вам не удается получить ссылку на ваши TextFields.f.field1, вероятно, не указывает на то, что вы думаете.Вы можете решить эту проблему, добавив ref:'field1' к вашей конфигурации TextField.Тогда у вашей FormPanel будет свойство field1, на которое вы можете ссылаться.

2 голосов
/ 07 декабря 2010

Вы можете использовать функцию markInvalid.Например:

if (new_val) {
    if(f.field2.getValue() == ''){
        f.field2.markInvalid('Cannot be empty');
    }
} else {
    // clears invalid flags on the field.
    f.field1.clearInvalid();
}

Не говорите, что это точный код для использования, но из этого видно, как пометить недействительные и удалить недействительные сообщения.Существует также возможность создания собственных валидаторов, хотя я не уверен, что это полностью соответствует вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...