2012-03-14 3 views
1

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

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' 
    }] 
}); 

при е я начинаю писать в подтверждение пароля текстовое поле Я получаю это в инструменте для обработки хрома: Uncaught TypeError: Object [object Object] has no method 'password'

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

UPDATE

приложение представляет собой приложение 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', 
    }] 
    }); 
    } 
}); 

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

ответ

1

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

Обновление: изменить функцию Validate на:

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

теперь я получаю сообщение об ошибке, когда я добавить «Ext.form.field.Vtypes», но я все равно получаю ошибку, даже если оба поля равны! – Adil

+0

Скорее всего, по какой-то причине он не может получить исходное поле. Добавьте некоторую трассировку в свою функцию проверки. – sha

+0

Я добавил несколько следов, но ничего! можете ли вы привести мне пример следа, который, как вы думаете, может быть, не так. – Adil

0

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; 
} 
0

Решение удалить кавычки «» 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' 
});