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 相关文章推荐
TopList标签和JavaScript结合两例
Aug 12 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
js中文逗号转英文实现
Feb 11 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
JavaScript插件化开发教程(五)
Feb 01 Javascript
新手快速学习JavaScript免费教程资源汇总
Jun 25 Javascript
跟我学习javascript的循环
Nov 18 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
js实现漫天星星效果
Jan 19 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
js实现旋转的星空效果
Nov 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
JAVA/JSP学习系列之四
2006/10/09 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
php 缩略图实现函数代码
2011/06/23 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
form自动提交实例讲解
2017/07/10 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
买房子个人收入证明
2014/01/16 职场文书
小学教师办公室制度
2014/02/03 职场文书
公司门卫岗位职责
2014/03/15 职场文书
保卫工作个人总结
2015/03/03 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL