ExtJS 4 - Как пометить поле формы как недействительное и отобразить красные границы вокруг него (как это сделано по умолчанию в ExtJS), если пользовательская проверка не удалась? - PullRequest
7 голосов
/ 11 октября 2011

enter image description here

У меня есть форма, в которой некоторые поля должны быть проверены на стороне сервера.

Когда форма отправлена, сервер проверяет значенияэти поля и если проверки не пройдены, сервер возвращает успех: false (вместе с именем и сообщением об ошибке каждого поля, в котором проверка не пройдена).

Теперь мне нужно отобразить такие поля как «неверные» и применитьта же красная граница вокруг них, которая по умолчанию выполняется ExtJS, если проверка на стороне клиента не удалась.

Я попытался использовать следующее:

Ext.getCmp ('fieldId'). markInvalid () и invalidCls: 'x-form-invalid-field'

Я использовал приведенные выше операторы в функции обратного вызова 'fail' формы form.submit.Эти инструкции вызываются, но не оказывают никакого влияния на такие поля.

Таким образом, кто-то может подсказать следующее:

Как пометить поле как незаполненное и применить тот же эффект (с красными границами) вокруг него при неудачной пользовательской проверке?

Заранее спасибо.

Ответы [ 5 ]

11 голосов
/ 04 декабря 2012

Получить сообщение об ошибке с сервера

Ext.getCmp('your_form_id').getForm().findField('field_id_or_field_name').markInvalid('server_error_message');
2 голосов
/ 11 октября 2011

Мне удалось найти решение для этого.

В случае сбоя проверки на стороне сервера, с сервера необходимо вернуть следующее:

success:false,
errors:{
    field1:errorMsg1,
    field2:errorMsg2
}

Это само помечает поля как недействительные и применяет к полям красную границу, если есть связанная ошибка.

Надеюсь, это поможет кому-то искать что-то похожее.

1 голос
/ 10 октября 2015

Вместо функции markInvalid используйте setActiveError, если вы также хотите изменить сообщение об ошибке.

Ext.getCmp('your_component_id').setActiveError('your_custom_error_message')
0 голосов
/ 06 июля 2016

Ext.getCmp ( '# fieldId') IsValid ();.

0 голосов
/ 14 ноября 2012

Попробуйте, это касается проверки сервера, вы можете использовать json или xml http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/form/xml-form.html

...