确认密码验证程序extjs4
我想添加一个简单的验证器来验证“password”和“confirm password”是否相等,下面是代码:确认密码验证程序extjs4,extjs4,Extjs4,我想添加一个简单的验证器来验证“password”和“confirm password”是否相等,下面是代码: Ext.apply('Ext.form.VTypes',{ password : function(val, field) { if (field.initialPassField) { var pwd = Ext.getCmp(field.initialPassField); return (val == pwd.getValue());
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开发者工具中得到以下信息:
未捕获类型错误:对象[Object Object]没有方法“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',
}]
});
}
});
Ext.require([
“Ext.panel.*”,
“Ext.toolbar.*”,
“Ext.button.*”,
“Ext.container.ButtonGroup”,
“Ext.layout.container.Table”
]);
外部应用程序({
姓名:‘AM’,
appFolder:'应用',
控制器:[
“用户”
],
启动:函数(){
Ext.create('Ext.container.Viewport'{
布局:“自动”,
//布局:“vbox”,
renderTo:document.body,
项目:[{
xtype:'usertoolbar',
},{
html:“
”
},{
xtype:“铭文”,
},{
xtype:'用户列表',
}]
});
}
});
另外,欢迎对我的代码结构方法进行任何说明将第一行中的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;
},
将第一行中的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;
},
将
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;
}
将
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;
}
解决方案是删除“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'
});
解决方案是删除“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'
});
现在我在添加“Ext.form.field.Vtypes”时收到错误消息,但即使这两个字段相等,我仍然收到错误消息!由于某种原因,它很可能无法获取原始字段。在验证函数中添加一些跟踪。我添加了一些跟踪,但什么都没有!!你能给我一个跟踪的例子吗?你认为我的跟踪方式可能不正确。问题仍然存在,控制台中没有出现对console.log的调用!所以验证没有被调用。。。你能以某种方式发布此文件的完整源代码吗?现在我在添加“Ext.form.field.Vtypes”时收到错误消息,但我仍然收到错误消息,即使这两个字段相等!由于某种原因,它很可能无法获取原始字段。在验证函数中添加一些跟踪。我添加了一些跟踪,但什么都没有!!你能给我一个跟踪的例子吗?你认为我的跟踪方式可能不正确。问题仍然存在,控制台中没有出现对console.log的调用!所以验证没有被调用。。。你能以某种方式发布这个文件的完整源代码吗?