`
梦幻小子
  • 浏览: 702 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于ext3.2.1异步验证问题

    博客分类:
  • EXT
阅读更多
之前做了一个类似于id异步验证的功能,这涉及到表单提交前做异步验证和不点提交也需给出相应提醒的问题,用的是ext3.2.1,选这个没有为什么,因为公司正在用。咱做IT的,公司用什么,就得学什么。

以下是从网上找的2种ext异步验证方法,我觉得都不靠谱。

1、将IsExsit设置为全局变量,但我按着做不起效果,存在问题:还未验证完,数据被提交了。
            validator :function()
                   {
                   var username = Ext.get('username').dom.value;
                   Ext.Ajax.request({
                      url:'CheckUserName.aspx',
                      params:{name:username},
                      success: function(response, options) {           
                         var data = Ext.util.JSON.decode(response.responseText);            
                         if(data.success == true)  ReturnValue(true);
                         else ReturnValue(false);//不能在success方法里面直接返回。
                      } 
                  });
                 function ReturnValue(ok){
                IsExsit = ok;
              }
              return IsExsit;
                   },

2、添加listeners配置项,listeners:{'keyup':{fn:chkOnServer}};添加配置项validationEvent:'blur',默认是“keyup”。必须注意要让监听“keyup”起效,还需要添加配置项enableKeyEvents:true,这项在api中是查不到的,而是写在keyup事件的描述中。

编写chkOnServer方法,chkOnServer(field,_event){},field为该field的引用,_event为这次事件,还没研究过是不是js原生的event,应该会有些扩展。这个方法只做ajax请求就行了,它的回调函数为changeRegBool(response,option)。
   
这么做,1中的问题是解决了,但效率太低,因为它是在文本框中每输入一个键就向服务器发起一次验证。

以下是本人的解决方案 
1、监听‘blur’事件,当光标离开文本域时验证一次,起到友好的提示效果。
'blur':function(_tf){
      Ext.Ajax.request({
   url:ctx + "/modelsMainAction.do?method=rightCodeIsExist",
   params:{rightCode:_tf.getValue()},
   success: function(response, opts) {
var obj = Ext.decode(response.responseText);
var _isExist = obj["isExist"];
isExist =!_isExist;
this.validate();
  },
  scope:this
   });
      }
2、提交前再向后台发起一次验证,成功后再提交数据。
if(!_formPanel.getForm().isValid()) return;
var _tf = _formPanel.findByType("textfield")[2];
Ext.Ajax.request({
   url:ctx + "/modelsMainAction.do?method=rightCodeIsExist",
   params:{rightCode:_tf.getValue()},
   success: function(response, opts) {
var obj = Ext.decode(response.responseText);
var _isExist = obj["isExist"];
isExist =!_isExist;
if(_tf.validate())
_formPanel.getForm().doAction('submit',{
url:ctx + "/modelsMainAction.do?method=modelSave",
method: 'POST',
success:function(){
var _isLeaf = true;
if(this.form.findByType("combo")[0].getValue() == "否") _isLeaf = false;
var _node = new Ext.tree.AsyncTreeNode({
            text:this.form.findByType("textfield")[0].getValue(),
            uiProvider:Ext.tree.ColumnNodeUI,
            leaf:_isLeaf,
            id:this.form.findByType("textfield")[2].getValue()
            });
_node.attributes.rightFullName =this.form.findByType("textfield")[1].getValue();
_node.attributes.rightCode =this.form.findByType("textfield")[2].getValue();
_node.attributes.href =this.form.findByType("textfield")[3].getValue();
_node.attributes.hrefTarget =this.form.findByType("textfield")[4].getValue();
_node.attributes.upRightCode =this.form.findByType("textfield")[6].getValue();
_node.attributes.rightType =this.form.findByType("combo")[1].getValue();
menuNode.appendChild(_node);
this.close();
},
waitTitle:"数据传输",
waitMsg:"数据传输中,请稍后。。。",
scope:this}
);
  },
  scope:this
   });

分享到:
评论

相关推荐

    EXT 3.2.1 Demo 最全实例

    EXT 3.2.1是Ext JS库的一个版本,它是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序。这个"EXT 3.2.1 Demo 最全实例"包含了一系列的示例,展示了EXT JS 3.2.1版本的各种功能和组件,帮助开发者深入...

    ext-3.2.1 下载包

    ext-3.2.1 ext-3.2.1 ext-3.2.1 ext-3.2.1

    Ext UploadDialog For Ext3.2.1 附使用示例

    "Ext UploadDialog For Ext3.2.1 附使用示例"这个资源正好解决了这个问题,它是一个针对ExtJS 3.2.1版本优化和改造的UploadDialog组件。改造的目标是为了提供一个稳定、功能完善的文件上传对话框,以便于开发者在3.x...

    ext超酷的grid中放图片(ext3.2.1)

    - EXT JS 3.2.1版本可能不支持现代浏览器特性,而且存在一些已知的问题和安全漏洞。 - 如果项目还在使用这个旧版本,建议升级到更现代的EXT JS版本,如7.x或更高,以利用新版本的性能提升和新功能。 7. **实际...

    ext-3.2.1下载包

    ext-3.2.使用的环境配置的整体文件,官网已经没有了,而且4之后都是付费的

    Ext JS 3.2.1

    中文教程:EXT 中文手册.doc 提供了对Ext JS 3.2.1的详细解释,帮助中文用户更好地理解和使用这个库。文档通常会涵盖组件的用法、配置选项、事件监听、数据绑定等方面,对于初学者来说是极好的资源。通过学习手册,...

    ext-3.2.1 demo项目

    **EXT-3.2.1 Demo项目概述** EXT-3.2.1是EXT JavaScript库的一个版本,专门用于构建富互联网应用程序(RIA)。这个版本包含了丰富的用户界面组件和强大的数据管理功能,使得开发者能够创建出交互性强、视觉效果出色...

    extjs--ext-3.2.1

    在这个“ext-3.2.1”压缩包中,包含了一系列用于ExtJS 3.2.1开发所需的文件。 1. **组件化开发**:ExtJS 3.2.1的核心特性之一是它的组件模型。它提供了一系列预定义的UI组件,如表格(Grid)、树形视图(Tree)、...

    extjs-3.2.1版本

    该压缩文件中包含extjs-3.2.1版本文件包以及Ext 3.0 中文文档

    extJs3.2.1

    ext-3.2.1ext-3.2.1ext-3.2.1

    ext-3.2.1资源包

    此资源包"ext-3.2.1.rar"包含了EXTJS库的3.2.1版本的所有组件、样式和文档,为开发者提供了构建交互式Web界面所需的工具。 EXTJS的核心特性包括: 1. **组件化**:EXTJS 提供了丰富的组件库,如表格、树形视图、...

    ext-3.2.1_中文文档

    4. 问题排查:遇到问题时,中文文档通常包含解决方案或提示,有助于定位和解决问题。 5. 社区支持:中文文档通常伴随着活跃的社区讨论,用户可以在论坛上交流经验,共同解决技术难题。 EXTJS 3.2.1 的中文文档可能...

    Ext官方中文教程(可打包下载)

    EXT简介 Ext 2简述 EXT新手建议 怎么轻松地进入Ext的世界? 从零开始Ext 设置基础页 Javascript中的作用域(scope)是什么?(一) Javascript中的作用域(scope)是什么?(二) Ext源码概述 Ext与RESTful Web Services ...

    Ext3.2常用的布局示例

    环境:Window XP Sp3、IE 7、FireFox、Tomcat 6.0、Eclipse 3.3 使用步骤: 1、下载解压缩之后,使用IDE导入工程 2、使用IDE启动该应用 3、一一注释main.js中的演示方法,可以看到...阅读:本中心学习Ext框架开发的学员

    Ext Tree 3.2.1

    Ext Tree 3.2.1 是一个用于构建交互式树形结构的JavaScript库,它是Ext JS框架的一个组件。Ext JS是一个强大的客户端JavaScript库,用于创建富互联网应用程序(RIA)。在这个3.2.1版本中,它包含了完整的源代码、...

    EXT3.2-API-中文

    EXT3.2-API-中文,希望对大家能有所帮助!

    ext-2.3.0 官方 下载 包

    ext 2.3.0 官方下载,包括api,demo,和源码,可供大家学习研究。

    ext-3.2.1.zip才是最新版本的Extjs类库

    ext 是 ExtJs的简称,是一个强大的js类库

    extjs 最新版ext-3.2.1

    要的话自己下 要的话自己下 要的话自己下

    MPTtoolbox(可行性工具箱,MPT 3.2.1

    Matlab MPT(可行性工具箱,MPT 3.2.1)是一个用于多变量控制制设计和分析的强大工具箱。要安装这个工具箱,需要按照以下步骤进行操作:1.首先,确保您已经安装了最新版本的Matlab软件。您可以在MatthWorks官方网站上下载...

Global site tag (gtag.js) - Google Analytics