微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

extjs4中的唯一表单字段验证

如何解决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 举报,一经查实,本站将立刻删除。