extjs vtype不适用于textarea

时间:2010-12-20 09:43:50

标签: javascript extjs

好的,我有一个用于enslish的vtype,只有符号的符号:

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 个答案:

答案 0 :(得分:3)

确保在monitorValid: true配置中包含FormPanel

以下是来自API的评论,更详细地解释了配置选项:

  

monitorValid:Boolean

     

如果为true,表单会监视它   有效的国家客户端和定期   触发clientvalidation事件   通过那个州。

     

监控有效状态时,   FormPanel启用/禁用其任何一个   配置按钮已经   使用formBind配置:true   取决于表单是否有效   或不。默认为false。

使用此设置,您应该看到启用/禁用按钮,并在vtype应用的任何字段周围显示红色轮廓。

更新:

我注意到englishOnly的文字变量被定义为 englishOnlyTest ,我认为它应该被定义为 englishOnlyText (你拼写&#34;测试&#34;而不是&#34; text&#34;)。如果我没记错的话,框架希望看到 text 附加到要用于返回文本的字符串。这可能是您没有看到任何红色轮廓或弹出文本的原因。