好的,我有一个用于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但表单仍然有效且屏幕上没有显示警告... 那是为什么?
答案 0 :(得分:3)
确保在monitorValid: true
配置中包含FormPanel
。
以下是来自API的评论,更详细地解释了配置选项:
monitorValid:Boolean
如果为true,表单会监视它 有效的国家客户端和定期 触发clientvalidation事件 通过那个州。
监控有效状态时, FormPanel启用/禁用其任何一个 配置按钮已经 使用formBind配置:true 取决于表单是否有效 或不。默认为false。
使用此设置,您应该看到启用/禁用按钮,并在vtype
应用的任何字段周围显示红色轮廓。
更新:
我注意到englishOnly
的文字变量被定义为 englishOnlyTest ,我认为它应该被定义为 englishOnlyText (你拼写&#34;测试&#34;而不是&#34; text&#34;)。如果我没记错的话,框架希望看到 text 附加到要用于返回文本的字符串。这可能是您没有看到任何红色轮廓或弹出文本的原因。