如何解决extjs4中的唯一表单字段验证
| 有没有一种更清晰的方法来定义extjs中的唯一表单字段。下面是一个示例代码,用于在客户端创建/版本上检查客户端UID。该代码有效,但存在一些错误-例如,在客户端创建时(如果您输入DB验证程序中已存在的值)将返回true,直到您取消关注该字段为止。Ext.define(\'AM.view.client.UniqueField\',{
extend: \'Ext.form.field.Text\',alias : \'widget.uniquefield\',vtype: \'UniqueUid\',initComponent: function() {
Ext.apply(Ext.form.field.VTypes,{
UniqueUidMask : /[0-9]/i,UniqueUid : function(val,field) {
if (val.length < 9) {
Ext.apply(Ext.form.field.VTypes,{
UniqueUidText: \'Company ID is too small\'
});
return false;
} else {
var paste=/^[0-9_]+$/;
if (!paste.test(val)) {
Ext.apply(Ext.form.field.VTypes,{
UniqueUidText: \'Ivalid characters\'
});
return false;
} else {
var mask = new Ext.LoadMask(field.up(\'form\'),{msg:\'Please wait checking....\'});
mask.show();
var test= 0;
var store = Ext.create(\'AM.store.Clients\');
store.load({params:{\'uid\':val,\'id\': Ext.getCmp(\'client_id\').getValue()}});
store.on(\'load\',function(test) {
mask.hide();
if(parseInt(store.getTotalCount())==0){
this.uniqueStore(true);
}else{
Ext.apply(Ext.form.field.VTypes,{
UniqueUidText: \'Company ID is already present\'
});
this.uniqueStore(false);
}
},this)
return true;
}
}}
},this);
this.callParent(arguments);
},uniqueStore: function(is_error){
Ext.apply(Ext.form.field.VTypes,{
UniqueUidMask : /[0-9]/i,{msg:\'Please wait checking....\'});
mask.show();
var store = Ext.create(\'AM.store.Clients\');
store.load({params:{\'uid\':val,function(test) {
mask.hide();
if(parseInt(store.getTotalCount())==0){
this.uniqueStore(true);
}else{
this.uniqueStore(false);
}
},this)
return is_error;
}
}}
},this);
}
});
解决方法
如何使用服务器端验证?
我在这里回答了类似的问题:extjs4 Rails 3模型验证的唯一性
显然,您可以将其更改为使用\“ ajax \”代替\“ rest \”代理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。