场景描述:

     在form表单中有个sfzhm的字段,需要去后台进行sfzhm是否重复的校验,一开始使用了blur的event来去后台进行校验,后来发现在焦点离开时,及时数据没有发生变化,也会造成后台访问,造成大量的资源浪费,如何解决这个问题呢?

 

        从官方的API中,查询可能解决此问题的属性或者事件:

  •          chagne事件
  •          dirtychange事件
  •          blur+focus事件:focus的时候记录原始值,blur离开的时候进行比较。

 

     经过分析后,发现:

  •       change方法有问题:每次输入一个字符都会触发此事件,抛弃。
  •       dirtychange:官方文档希望达到的目的是,一旦跟原始时不一致时isDirty的值变成true。网络上很多人也是在用这个事件来进行校验,但是如果使用此属性要注意:

               1.默认loadRecord会改变isDirty的值,如果想保持不变,需要在form中添加属性:trackResetOnLoad:true,

               2.在一个页面中,修改一次后,isDirty的值变成true,后续无论怎么修改都不会再触发。(这样会造成漏判)。

  •        focus+blur的方法,能解决我的问题,见代码:

           controlle中定义两个属性:

    rybhOldValue : '',
sfzhmOldValue : '',

         定义监控事件:

            '#personWindow #rybh' : {
focus : this.handlerRybhFocus,
blur : this.handlerRybh,
// //dirtychange:this.handleRybhDirtyChange,
// change:this.handleRybhChange,
},
'#personWindow #sfzhm' : {
focus : this.handlerIDCardFocus,
blur : this.handlerIdCard
},

     事件方法:

handlerRybhFocus : function(textField) {
this.rybhOldValue = textField.getValue();
},
// handleRybhDirtyChange : function(textField,isDirty){
// console.log("此时触发了dirtychange事件,此时idDirty的值为:"+isDirty);
// },
// handleRybhChange:function(textField, newValue, oldValue){
// console.log("此时触发了change事件,newValue='"+newValue+"',
// oldValue='"+oldValue+"'");
// },
handlerRybh : function(textField) {
if (textField.getValue() != this.rybhOldValue) {
}
}

        希望有所帮助。

Ext中如何校验TextField的字段被修改了?的更多相关文章

  1. Oracle中已有数据的字段类型修改

    创建测试表 create table t_person( id varchar2(200) primary key, name varchar2(200), address varchar2(200) ...

  2. Struts2中的校验框架

    Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...

  3. Ext中renderer用法及参数

    转载处:http://blog.csdn.net/yangxiaojun9238/article/details/8240139 setHeader是设置http恳求的头是MIME 和谈的拓展可以实现 ...

  4. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  5. Django中的ORM介绍,字段以及字段的参数。

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  6. Ext中的get、getDom、getCmp、getBody、getDoc的区别

    Ext中的get.getDom.getCmp.getBody.getDoc的区别Ext中包含了几个以get开头的方法,这些方法可以用来得到文档中DOM.得到当前文档中的组件.得到Ext元素等,在使用中 ...

  7. 删除数据表中除id外其他字段相同的冗余信息

    删除一个信息表中除id外其他字段都相同的冗余信息,如下 id name addr 1 a b 2 a b 3 b c 删除这个表中的冗余信息 即应该是 id name addr 1 a b 3 b c ...

  8. SQL查询数据库中所有指定类型的字段名称和所在的表名

    --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...

  9. alv中编辑的时候quan字段小数位数被截取掉

    alv中编辑的时候quan字段小数位数被截取掉:位数太多(最大只能为 0) 解决方法: ls_fcat-fieldname  =  'ZKBSL'.  ls_fcat-coltext  =  '卡板数 ...

随机推荐

  1. c#自定义进度条

    有些时候我们做的程序需要进度条,而vs提供的控件不是我们想要的.先看效果图:       进度条闪烁动画,当然背景可设为Transparent 之前想手绘进度条线条的,结果控件运行时会闪烁,所以直接用 ...

  2. datagridview添加复选框全选和取消

    全选 private void All_selected_Click(object sender, EventArgs e) { ; i < this.DataGridViewProduct.R ...

  3. [leetcode]_Valid Palindrome

    题目:判断一个数字字符串是否是回文串.空串认为是回文串. 思路:双指针问题,重点在于此题的很多陷进:例如,s = " " ,return true. s = ".,&qu ...

  4. 每天进步一点--c#基础巩固,事件、委托

    要想技术有所提高,就是把有些问题真正的弄懂弄明白,我从事C#开发两年了,一直对事件委托等概念一知半解,有时候博客园上看看别的大牛的文章,看看懂了就过去了,时间长了又忘了,真正理解还是要自己动手弄些例子 ...

  5. win7旗舰版在安装vs2010后向sql2008添加SQL_Server_Management详解

    原文地址:http://blog.csdn.net/bruce_zeng/article/details/8202746

  6. 实战Django:简易博客Part1

    舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...

  7. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  8. Android---WebView显示Html乱码问题

    webView.loadData(result,"text/html","UTF-8"); 反正是用上面的方法无法解决乱码的问题. 使用下面的方法就能完美解决了 ...

  9. 九度oj 1530 最长不重复子串

    原题链接:http://ac.jobdu.com/problem.php?pid=1530 字符串简单题,看似O(n^2)的复杂度10000的数据量会tle,其实最长不重复子串不超过26个嘛... 如 ...

  10. iOS耳机操作

    iOS在7之后增加的麦克风权限的申请,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 AVAudioSession *avSession = [AVAudioSession shar ...