Подтвердите валидатор пароля ExtJs 4 - PullRequest
1 голос
/ 14 марта 2012

Я хочу добавить простой валидатор, чтобы убедиться, что «пароль» и «подтвердить пароль» равны, вот код:

Ext.apply('Ext.form.VTypes',{
password : function(val, field) {
    if (field.initialPassField) {
        var pwd = Ext.getCmp(field.initialPassField);
        return (val == pwd.getValue());
    }
    return true;
},

passwordText : 'Passwords do not match'
});
var genders = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
    {"abbr":"AL", "name":"Male"},
    {"abbr":"AK", "name":"Female"}        
]
});

//****************************************
Ext.define('AM.view.user.Inscription', {
    extend: 'Ext.form.Panel',
    alias: 'widget.inscription',
    title: 'Formulaire',
    fieldDefaults: {
        labelAlign: 'right',
        msgTarget: 'side'
    },
      items: [{
        xtype: 'container',
        anchor: '100%',
        layout:'column',
        items:[{
                xtype:'textfield',
                fieldLabel: 'First Name',
                name: 'first',
                allowBlank:false,
                anchor:'40%',
                //maxLength : '10'
            },{
                xtype:'textfield',
                fieldLabel: 'Last Name',
                name: 'last',
                allowBlank:false,
                anchor:'40%'
            },{
                    xtype:'textfield',
                inputType: 'password',
                fieldLabel:'Password',
                name:'pass',
                id : 'pass',
                allowBlank:false,
                anchor:'40%'
            },{
                xtype:'textfield',
                inputType: 'password',
                fieldLabel:'Confirm Password',
                name:'confirmPass',
                allowBlank:false,
        vtype : 'password',
        initialPassField : 'pass',
        //autoRender : true,
                anchor:'40%'
            }]
        },{
            xtype: 'container',
            columnWidth:.5,
            layout: 'anchor',
            items: [{
                xty pe:'combobox',
                fieldLabel: 'Sexe',
                store: genders,
                queryMode: 'local',
                displayField: 'name',
                allowBlank : false,
                name: 'gender',
                editable : false,
                anchor:'30%',

            },{
                xtype:'textfield',
                fieldLabel: 'N° Téléphone',
                name: 'phone',
                allowBlank:false,
                anchor:'40%'
            }]
        }]
    }],

    buttons: [{
        text: 'Save'
    },{
        text: 'Reset'
    },{
        text: 'Cancel'
    }]
});

когда я начинаю писать в текстовое поле подтверждения пароля, я получаю этов Chrome Developer Tool: Uncaught TypeError: Object [object Object] has no method 'password'

Может кто-нибудь сказать мне, что я здесь скучаю?Заранее спасибо.

ОБНОВЛЕНИЕ

приложение является приложением MVC, и этот файл (код выше) находится в папке View, и я вызываю это представлениев app.js вот так:

 Ext.require([
'Ext.panel.*',
'Ext.toolbar.*',
'Ext.button.*',
'Ext.container.ButtonGroup',
'Ext.layout.container.Table'
]);
Ext.application({
name: 'AM',
appFolder: 'app',
controllers: [
    'Users'
],
launch: function() {
   Ext.create('Ext.container.Viewport', {
       layout : 'auto',
       //layout : 'vbox',
       renderTo: document.body,
        items: [{
            xtype : 'usertoolbar',
        },{  
            html : '<br><br>' 
        },{
            xtype: 'inscription',
        },{
            xtype: 'userlist',
    }]
    });
  }
});

Также приветствуются любые замечания о моей методологии структурирования кода

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Измените Ext.form.VTypes на Ext.form.field.VTypes в первой строке.Посмотрите, поможет ли это.

Обновление: измените свою функцию проверки на:

password : function(val, field) {
    console.log(val, field);
    if (field.initialPassField) {
        var pwd = Ext.getCmp(field.initialPassField);
        console.log(pwd);
        return (val == pwd.getValue());
    }
    return true;
},
0 голосов
/ 01 апреля 2014

Решение состоит в том, чтобы удалить кавычки вокруг 'Ext.form.field.VTypes'

Ext.apply(Ext.form.field.VTypes, {
    password: function (val, field) {
        if (field.initialPassField) {
            var pwd = Ext.getCmp(field.initialPassField);
            return (val == pwd.getValue());
        }
        return true;
    },
    passwordText: 'Passwords do not match'
});
0 голосов
/ 25 января 2014

Измените Ext.form.VTypes на Ext.form.field.VTypes.И попробуйте удалить кавычки вокруг 'Ext.form.field.VTypes'.Например:

Ext.apply(Ext.form.field.VTypes, {
password : function(val, field) {
    if (field.initialPassField) {
        var pwd = Ext.getCmp(field.initialPassField);
        return (val == pwd.getValue());
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...