Пометить форму как недействительную - PullRequest
1 голос
/ 15 февраля 2012

На моем поле (ах) в FormPanel я добавил слушателя blur. Если это событие происходит, я выполняю проверку формы следующим образом:

listeners:{
    scope: this,
    blur: function(field, value){
        var username = field;
        if (username.getValue() == '') {
            username.markInvalid('This field is required');
        } else {
            Ext.Ajax.request({
                url: 'users/validateForm',
                method: 'POST',
                params: 'username=' + username.getValue(),
                success: function(response, opts) {
                    var jsonData = Ext.decode(response.responseText);
                    if (jsonData.msg.username != '') {
                        username.markInvalid(jsonData.msg.username);
                    }
                }
            });
        }
    }
}


buttons: [{
    text: 'Save',
    handler: function() {
        var form = this.up('form').getForm();
        if (form.isValid()) {
            alert('test');
        }
    },
    formBind:true
},{
    text: 'Cancel'
}]

Как объясняется в документации к Ext JS, функция markInvalid () влияет только на само поле. Но я также хочу установить форму как недействительную, чтобы кнопка отправки была отключена, когда форма недействительна. В настоящее время функция isValid () в форме всегда возвращает true, хотя поля (поля) помечены как недействительные.

Теперь у меня вопрос: как я могу добиться того, чтобы форма также была неверной с кодом выше?

Большое спасибо за вашу помощь!

1 Ответ

1 голос
/ 16 февраля 2012

Вы должны иметь возможность использовать метод hasInvalidField(), доступный в форме. Например:

var form = this.up('form').getForm();
if (form.hasInvalidField()) {
    alert('test');
}

Из документов:

Возвращает true, если форма содержит недопустимые поля.

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