Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Как работает валидация форм? (https://javascript.ru/forum/extjs/22170-kak-rabotaet-validaciya-form.html)

Ichigeki 08.10.2011 22:48

Как работает валидация форм?
 
Пытаюсь ратзобраться, как проверить, валидные ли данные ввел пользователь перед отправкой на сервер. Везде нахожу что-то вроде этого:

if (this.up('form').getForm().isValid()) {
    ....
}


Как я понял, для textarea, наприимер, isValid() возвращает true либо false когда поле пустое\непустое, если allowBlank= false.
А вот если мне , к примеру, надо сделать, чтобы валидация не проходила, когда длина введенной строки меньше 10 символов, или регексп какой-нибудт хитрый применить.. Как в этом случае быть?

DreamTheater 08.10.2011 23:26

http://docs.sencha.com/ext-js/4-0/#!...-cfg-minLength

Ichigeki 09.10.2011 19:29

спасибо

Ichigeki 15.10.2011 03:13

Опять возникла проблема с валидацией...
{
        xtype:     'form',
        id: 'myform',
        url: 'update',
        bodyStyle:'padding:5px 5px 0',
        items: [{
          id : 'parentLinkText',
          fieldLabel: 'Text',
          xtype: 'textfield',
          name : 'linknamef',
          width: 300,
          allowBlanks: false,
          minLength: 3,
          mxnLength: 20
        },{
          width: 300,
          xtype: 'textfield',
          name : 'avatarfilef',
          fieldLabel: 'Header Image',
          inputType: 'file'
        },{
          id: 'parentLinkId',
          xtype: 'hiddenfield',
          name: 'idhiddenf',
          value: 0
        }]
      }
.....
var form  = parentLinksPanel.down('form');
   
if( form.getForm().isValid() ){

}


form.getForm().isValid() всегда возвращает true. Почему так???

Само поле подсвечивается красным только когда в нем что-то печатаешь пока меньше трех символов. А вот isValid() не работает :(

Ichigeki 15.10.2011 11:36

частично ошибку нашел: вместо allowBlanks надо было писать allowBlank

Но не получается сделать фалидацию с помощью регэкспа, если вместо allowBlank: false использовать:

regex: RegExp("^[A-Za-z]{3,20}$"),
  regexText: 'regexText'


Проблема такая же: поле подсвечивается красным только во время ввода текста(если он не удовлетворяте условиям рекэкспа), а при нажатии вызове isValid() - не подсвечивается :(


Часовой пояс GMT +3, время: 08:43.