使用按钮extjs验证电子邮件文本字段

时间:2017-05-12 08:22:20

标签: validation extjs textfield

我有一个文本字段,使用

将电子邮件作为其值
vtype : 'email'

我正在尝试使用按钮验证此文本字段,其中,当单击时,它应该提醒我文本字段是否有电子邮件输入。根据我的代码,无论输入如何,验证总是给我 false 。我该怎么做?这是我的代码:

Ext.create('Ext.form.Panel', {
    title: 'Contact Info',
    width: 300,
    bodyPadding: 10,
    renderTo: Ext.getBody(),
    items: [{
        xtype: 'textfield',
        id: 'emailField',
        fieldLabel: 'EmailAddress',
        vtype: 'email',
        allowBlank: false,
        validator: function (val) {
            var fieldValidation = Ext.form.field.VTypes.email(val);
            if (fieldValidation === true) {
                this.setFieldStyle("background-color : #BCF5A9");
            } else {
                this.setFieldStyle("background-color : #F6CECE");
            }
        },

    }, {
        xtype: 'button',
        text: 'select',
        handler: function () {
            alert(Ext.getCmp('emailField').isValid());
        }
    }]
});

P.S:我理解问题出在我在文本字段中使用的validator: function (val)。但我需要它根据输入更改文本字段的颜色。还有其他方法吗?

修改

我通过将validator : function更改为change : function

来实现它
listeners: {
        'change': function (thisField) {

            if (thisField.isValid()) {
                this.setFieldStyle("background-color : #BCF5A9");
            } else {
                this.setFieldStyle("background-color : #F6CECE");
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

我通过将validator : function更改为change : function

来实现它
listeners: {
        'change': function (thisField) {

            if (thisField.isValid()) {
                this.setFieldStyle("background-color : #BCF5A9");
            } else {
                this.setFieldStyle("background-color : #F6CECE");
            }
        }
    }