Ext JS - 验证TextField

时间:2015-07-06 22:44:17

标签: javascript extjs extjs5 sencha-architect

我是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,则会弹出错误。

如何去做?

提前致谢!

1 个答案:

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

希望这有帮助!