我是Ext JS的新手,所以我需要som ehelp来验证文本字段。
要求是用户点击“添加”按钮并显示一个新窗口。这个新的windown将有两个文本字段ID和Name。 USer可以在Name fild中输入任何内容。但ID不应该是PLStore中存在的ID。
我知道我需要使用验证器但是如何通过PlStore值进行迭代?
{xtype: 'form',
bodyPadding: 10,
title: '',
items: [
{
xtype: 'textfield',
store: 'PLStore',
anchor: '100%',
fieldLabel: 'ID'
},
{
xtype: 'textfield',
anchor: '100%',
fieldLabel: 'Name'
},
PLStore包含以下XML:
<?xml version="1.0" encoding="utf-8"?>
<Rowsets CachedTime="" DateCreated="2015-06-29T06:30:24" EndDate="2015-06-29T06:30:24" StartDate="2015-06-29T05:30:24" Version="15.0 SP4 Patch 4 (Jun 3, 2015)">
<Rowset>
<Row>
<PLName>CA</PLName>
<PLID>1001</PLID>
</Row>
<Row>
<PLName>VA</PLName>
<PLID>1002</PLID>
</Row>
<Row>
<PLName>MH</PLName>
<PLID>1003</PLID>
</Row>
</Rowset>
</Rowsets>
因此,如果用户将ID设置为1001,1002或1003,则会弹出错误。
如何去做?
提前致谢!
答案 0 :(得分:3)
如果您正在使用Ext&gt; 4.0ish,你在使用验证器属性的正确轨道上。您应该能够将其设置为自定义函数,并在其中进行验证。为了检查商店,一个选项是为该商店分配storeId
,以便您可以获得对它的引用以进行验证。因此,您的“id”字段配置可能类似于:
{
xtype: 'textfield',
anchor: '100%',
fieldLabel: 'ID',
validator: function(fieldVal) {
var ds = Ext.getStore('myStoreId'),
ix = ds.find('id', fieldVal);
return ix < 0;
}
}
其中'myStoreId'是您已分配数据存储的“storeId”,并且“id”被假定为我们正在寻找的字段的ID。
自从我使用框架以来已经有一段时间了,所以在这里的文档,以防我错过了语法中的内容:
http://docs.sencha.com/extjs/4.2.3/#!/api
希望这有帮助!