extjs vtype не работает на textarea - PullRequest
1 голос
/ 20 декабря 2010

хорошо, у меня есть vtype для ensish и sign, который выглядит следующим образом:

Ext.apply(Ext.form.VTypes, {
excel: function (v) {
    return /^.*.(xls)$/.test(v);
},
excelText: 'Must be an *.xls file',
englishOnly: function (v) {
    return /^[a-z0-9,\.\~\!\@\#\$\%\^\&\*\(\)\_\+\<\>]*$/.test(v);
},
englishOnlyTest: 'Must be English letters'

});

теперь у меня есть форма, которая выглядит следующим образом:

new Ext.FormPanel({
    id: 'add-label-form',
    url: hp,
    frame: true,
    baseParams: { actionName: 'AddLable' },
    defaultType: 'textfield',
    labelWidth: 70,
    items: [{
        id: 'tbKey',
        fieldLabel: localize.key,
        allowBlank: false,
        name: 'tbKey',
        anchor: '100%'
    }, {
        id: 'tbHebrewTran',
        fieldLabel: localize.hebrew,
        allowBlank: false,
        name: 'tbHebrewTran',
        anchor: '100%'
    }, {
        id: 'tbEnglishTran',
        fieldLabel: localize.english,
        allowBlank: false,
        name: 'tbEnglishTran',
        anchor: '100%'
    }, {
        id: 'tbDescription',
        xtype: 'textarea',
        vtype:'englishOnly',
        fieldLabel: localize.description,
        allowBlank: true,
        name: 'tbDescription',
        anchor: '100%'
    }],
    buttons: [{
        text: localize.submit,
        formBind: true,
        handler: onAddLabelSubmitClick
    }, {
        text: localize.reset,
        handler: function () {
            var f = Ext.getCmp('add-label-form').getForm();
            f.reset();
        }
    }]
})

Обработчик vtype вызывается и возвращает false, как и ожидалось, но форма все еще действительна и на экране не отображается предупреждение ... почему это так?

1 Ответ

3 голосов
/ 20 декабря 2010

Обязательно включите monitorValid: true в вашу FormPanel конфигурацию.

Вот комментарий от API, который более подробно объясняет параметр конфигурации:

monitorValid: Boolean

Если true, форма отслеживает свое действительное состояние на стороне клиента и регулярно запускает событие проверки клиента, передавая это состояние.

При мониторинге действительного состояния FormPanel включает / отключает любую из своих настроенных кнопок, которыебыли настроены с formBind: true в зависимости от того, является ли форма действительной или нет.По умолчанию установлено значение false.

В этом наборе вы должны увидеть включенную / отключенную кнопку и красный контур вокруг любого поля, к которому применяется vtype.

Обновление:

Я заметил, что ваша текстовая переменная для englishOnly определена как englishOnlyTest , и я думаю, что она должна быть определена как englishOnlyText (вы написали "test"вместо "текст").Если я правильно помню, фреймворк ожидает увидеть text , добавленный к строке, которую вы хотите использовать для возвращаемого текста.Возможно, поэтому вы не видите никаких красных контуров или всплывающих текстов.

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