Extjs表单输入框异步校验的插件实现方法


Posted in Javascript onMarch 20, 2017

一、效果如图所示

特点:

1、异步后台校验不会对用户操作产生阻塞感;

2、可在用户停止输入后自动校验,避免频繁进行无谓的后台校验;

3、以插件方式实现,方便使用;

Extjs表单输入框异步校验的插件实现方法

二、插件源码如下:

/**
* Created by jiawenjun on 2016/10/19.
*/
Ext.define('Ext.ux.plugins.FieldAjaxVerify',{
extend: 'Ext.AbstractPlugin',

alias: 'plugin.fieldajaxverify',

buffer:500,

url:'',

timeout:1000,

connectionFailure:'服务器连接失败'

init:function(field){


var me=this;


var params=me.params;


field.enableKeyEvents=true;


field.on('keyup',Ext.Function.createBuffered(function(field,e){


var value=field.getValue();


if(Ext.isEmpty(value)){



return;


}


var params=field.up('form').getValues();


if(Ext.isFunction(me.getParams)){



params=me.getParams(field,value);


}
Ext.Ajax.request({
url:me.url,
method:"POST",
params:params,
timeout: me.timeout,
contentType: "application/json; charset=utf-8",
success:function(response){
var obj = Ext.JSON.decode(response.responseText);
if(obj.result["success"]===true){
field.setValidation(true);
field.validate();
}else{
field.setValidation(obj.result["message"]);
field.validate();
}
},
failure:function(response){
var result = Ext.JSON.decode(response.responseText);
field.setValidation(me.connectionFailure);
field.validate();
}
});
},me.buffer))
}
});

三、应用方式

{name:'equipmentLedgerCategoryName',fieldLabel:'分类名称' ,allowBlank:false ,afterLabelTextTpl :'
<span style="color:red;font-weight:bold" data-qtip="必填项">*</span>'
,plugins:{ptype: 'fieldajaxverify',url:'/service/uniquenessCheckName'}}

可用配置项:

1、buffer 毫秒数(在多少毫秒内用户没有输入操作则自动向后台发送验证请求

2、timeout ajax请求超时限制(毫秒数)

3、getParams(field,value) 自定义ajax参数内容

四、后台服务提供的数据格式

{
  "resultCode" : 0,
  "result" : {
    "message" : "分类名称重复",
    "success" : false
  },
  "msgId" : "41c2c52c-66d4-49c5-be52-0158e71cfe2c",
  "success" : true
}

备注:在Extjs5.1下测试通过,有其他个性化需求可参考此插件进行实现,谢谢。

以上所述是小编给大家介绍的Extjs表单输入框异步校验的插件实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
后台获取ZTREE选中节点的方法
Feb 12 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
详解node nvm进行node多版本管理
Oct 21 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
详解小程序循环require之坑
Mar 08 Javascript
详细分析Node.js 模块系统
Jun 28 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
js实现鼠标拖动功能
Mar 20 #Javascript
基于vue2的table分页组件实现方法
Mar 20 #Javascript
详解Weex基于Vue2.0开发模板搭建
Mar 20 #Javascript
基于vue.js实现侧边菜单栏
Mar 20 #Javascript
微信小程序 参数传递实例代码
Mar 20 #Javascript
vue.js指令v-model使用方法
Mar 20 #Javascript
微信小程序中子页面向父页面传值实例详解
Mar 20 #Javascript
You might like
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python使用re模块验证危险字符
2020/05/21 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
治庸问责工作总结
2015/08/11 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
python playwright之元素定位示例详解
2022/07/23 Python
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS