ExtJS 4 表单验证
ExtJS 4 form validation
我有一个简单的表单(5 个文本字段),其中一个我必须验证(检查它的值在商店列表中是否唯一)。所以我的代码如下:
{
xtype: 'textfield',
fieldLabel: 'Name',
itemId: 'BRW_NAME',
vtype: 'alphanum',
validator: function (tab) {
Ext.getStore('BrwStore').each(function(rec) {
if (rec.get('brw_nazwa') == tab) {
//debugger;
Ext.ComponentQuery.query('#BRW_NAME').markInvalid('DOUBLE NAME ERROR!');
return (false);
}
});
return (true);
}
但在我输入相同的值(与商店中的值相同)后,此字段仍然有效。当我使用 "debugger" 时,我看到该字段被标记为无效(字段周围的红框和过程 return false)但我只能在这一刻看到它。当我松开调试器控制时,该字段变得正常(我的意思是没有红框)。
为什么?
怎么了?
不知道为什么,但是当此验证错误设置在 "each" 循环之外时,如下所示:
{
xtype: 'textfield',
fieldLabel: 'Name',
itemId: 'BRW_NAME',
vtype: 'alphanum',
validator: function (tab) {
var err = false;
Ext.getStore('BrwStore').each(function(rec) {
if (rec.get('brw_nazwa') == tab) err = true;
});
if (err) {
Ext.ComponentQuery.query('#BRW_NAME').markInvalid();
return 'DOUBLE NAME ERROR!';
}
return (true);
}
一切正常
我有一个简单的表单(5 个文本字段),其中一个我必须验证(检查它的值在商店列表中是否唯一)。所以我的代码如下:
{
xtype: 'textfield',
fieldLabel: 'Name',
itemId: 'BRW_NAME',
vtype: 'alphanum',
validator: function (tab) {
Ext.getStore('BrwStore').each(function(rec) {
if (rec.get('brw_nazwa') == tab) {
//debugger;
Ext.ComponentQuery.query('#BRW_NAME').markInvalid('DOUBLE NAME ERROR!');
return (false);
}
});
return (true);
}
但在我输入相同的值(与商店中的值相同)后,此字段仍然有效。当我使用 "debugger" 时,我看到该字段被标记为无效(字段周围的红框和过程 return false)但我只能在这一刻看到它。当我松开调试器控制时,该字段变得正常(我的意思是没有红框)。
为什么? 怎么了?
不知道为什么,但是当此验证错误设置在 "each" 循环之外时,如下所示:
{
xtype: 'textfield',
fieldLabel: 'Name',
itemId: 'BRW_NAME',
vtype: 'alphanum',
validator: function (tab) {
var err = false;
Ext.getStore('BrwStore').each(function(rec) {
if (rec.get('brw_nazwa') == tab) err = true;
});
if (err) {
Ext.ComponentQuery.query('#BRW_NAME').markInvalid();
return 'DOUBLE NAME ERROR!';
}
return (true);
}
一切正常