Extjs 5验证 - 输入4个字符后验证

时间:2014-10-10 20:16:27

标签: regex validation extjs

我目前正在尝试以

格式验证字符串

1个字符(A-Z)和3个字符(A-Z 0-9)(字母后跟3个字母数字)

这是我的自定义vtype:

customalphanumeric: function(
    return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v);
},
customalphanumericText: 'Please enter 1 Alpha character followed by 3 alphanumeric characters',
customalphanumericMask: /([A-Za-z0-9])/

当我在框中输入任何字母时,文本显示“请输入1个Alpha字符后跟3个字母数字字符”。

如何让它等待输入4个字符?

我试过这个:

if (v.length == 4) {
    return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v);
}
else {
    return true;
}

但这允许少于4个字符的短语。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为这不会按照你想要的方式工作,因为如果错误没有显示,直到它达到4个字符,这意味着表单在此之前是有效的,无论谁使用你的表单都能够提交它。

您可以做的是添加minLength:4属性并正确显示所有验证:

Ext.application({
    name : 'MyApp',

    launch : function() {
        var customRegEx = /^([A-Z]){1}([A-Z0-9]){3}$/i;
        Ext.apply(Ext.form.field.VTypes, {
            customtest: function(val, field) {
                return customRegEx.test(val);
            },
            customtestText: 'Please enter 1 Alpha character followed by 3 alphanumeric characters',
            customtestMask: /([A-Z0-9])/
        });

        Ext.create('Ext.panel.Panel',{
            title: 'Test Panel',
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'textfield',
                vtype: 'customtest',
                minLength: 4
            }]
        })
    }
});

答案 1 :(得分:0)

你几乎拥有它。

if (v.length == 4) {
    return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v);
}
else {
    //return true;
    return false;
}

您也可以更改else语句中给出的文本