做项目时经常需要验证某个字段的唯一性,这里自己写了个vtype,来验证用户名是否唯一。
JAVA 端代码略.
form 部分代码:
{ name : "username", fieldLabel : "用户名", xtype : "textfield", vtype : 'userrange', minLength:6, maxLength:32, listeners: { 'blur':function(f){ //console.debug(f); } }, readOnly:this.lock, allowBlank : this.lock, blankText : "用户登陆的标识,不能为空,并且是整个站点中唯一!" }
vtype代码:
Ext.apply(Ext.form.VTypes, { //用户名唯一性验证 userrange : function(val, field) { if(!val){ //return false; }else{ Ext.Ajax.request({ url : "../../isUserExist.action", params:{ username:String.escape(val) }, success:function(response, opts) { var obj = Ext.decode(response.responseText); //console.dir(obj); //console.warn("------",obj.result); if(obj.result!=null){ return false; }else{ return true; } }, failure:function(_r,_p){ Ext.Msg.alert("错误",_r/*.toSource()*/); } }); } }, userrangeText : "用户名已经存在!" });
不缺点:
1.验证的触发事件需要改正,当前是每输入一次就会对服务器查询一次。这样搞法要死人的。
2.如果是修改数据时,当页面read完,就会报用户名已经存在的错误。
这是不应该的,我还没改呢。