Ext中如何校验TextField的字段被修改了?
场景描述:
在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的字段被修改了?的更多相关文章
- Oracle中已有数据的字段类型修改
创建测试表 create table t_person( id varchar2(200) primary key, name varchar2(200), address varchar2(200) ...
- Struts2中的校验框架
Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...
- Ext中renderer用法及参数
转载处:http://blog.csdn.net/yangxiaojun9238/article/details/8240139 setHeader是设置http恳求的头是MIME 和谈的拓展可以实现 ...
- 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- Django中的ORM介绍,字段以及字段的参数。
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Ext中的get、getDom、getCmp、getBody、getDoc的区别
Ext中的get.getDom.getCmp.getBody.getDoc的区别Ext中包含了几个以get开头的方法,这些方法可以用来得到文档中DOM.得到当前文档中的组件.得到Ext元素等,在使用中 ...
- 删除数据表中除id外其他字段相同的冗余信息
删除一个信息表中除id外其他字段都相同的冗余信息,如下 id name addr 1 a b 2 a b 3 b c 删除这个表中的冗余信息 即应该是 id name addr 1 a b 3 b c ...
- SQL查询数据库中所有指定类型的字段名称和所在的表名
--查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 SELECT cols.object_id , co ...
- alv中编辑的时候quan字段小数位数被截取掉
alv中编辑的时候quan字段小数位数被截取掉:位数太多(最大只能为 0) 解决方法: ls_fcat-fieldname = 'ZKBSL'. ls_fcat-coltext = '卡板数 ...
随机推荐
- Windows服务中用Timer和线程两种方式来执行定时任务
在Service服务文件夹下新建Windows服务 - TestService
- Data Being Added Conflicts with Existing Data
While developing a page with multiple scrolls levels, and especially when using a grid, you may get ...
- windows实用技巧
电脑如今已经非常普及,不过目前大多数电脑系统都是Win7/Win8.1或者Win10.你真的对自己电脑系统了解吗?今天小编为大家分享13个实用电脑技巧,会这些电脑技巧才叫牛哦! 13个实用电脑技巧 一 ...
- System.Transaction (TransactionScope) 与 可提升 (Promotable) 交易
这是我的备份,原文请看 http://www.dotblogs.com.tw/mis2000lab/archive/2014/11/12/transactionscope_promotable_tr ...
- STL之迭代器
容器支持的迭代器类型 STL Container Type of Iterators Supported vector random access iterators 元素严格有序(类似数组 ...
- Express实现http和https服务
一.介绍Http与Https 概念 HTTP: 超文本传输协议(Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文 ...
- .NET开源工作流RoadFlow-快速入门
在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...
- 自己的php函数库
//判断数组中是否有元素为空的函数,支持多维数组,相似系统函数in_array(value,array,type) function is_null_array($arr) { if(!is_arra ...
- Mybatis动态SQL
1.动态SQL基本标签 •if •choose (when, otherwise) •trim (where, set) •foreach 2.IF 具体用法 <select id=" ...
- Jquer的三种初始化方式
$(document).ready(function(){ alert(200); }); jQuery(function($){ alert(100); }); $(function(){ aler ...