//验证码控件
Ext.define('ux.form.field.Verify', {
extend: 'Ext.container.Container',
alias: ['widget.fieldVerify'],
requires: ['Ext.Img', 'Ext.form.field.Text'],
layout: {
type: 'hbox',
align: 'stretch'
},
config: {
//文本框内刷新按钮
refresh: false,
//文本框
textfield: {
hideLabel: true,
emptyText: '请输入验证码'
},
//图片
img: {
flex: 1,
height: 53,
margin: '0 0 0 2',
alt: '点击刷新'
}
},
//初始化
initComponent: function () {
var me = this;
me.callParent(arguments);
//新增
me.add([me.getTextfield(), me.getImg()]);
},
//创建文本框
applyTextfield: function (config) {
return Ext.factory(config, Ext.form.field.Text, this.getTextfield());
},
//创建图片
applyImg: function (config) {
return Ext.factory(config, Ext.Img, this.getImg());
},
//更新图片
updateImg: function (newItem, oldItem) {
if (newItem) {
//隐藏就不显示验证码
if (!this.isHidden()) {
newItem.setSrc(this.codeImgUrl);
}
newItem.on({
scope: this,
click : {
element : 'el',
fn :'onRefreshImg'
}
});
}
},
//更新文本框内置按钮
updateRefresh: function (newItem, oldItem) {
if (newItem) {
var textfield = this.getTextfield();
newItem.handler = 'onRefreshImg';
newItem.scope = this;
textfield.setTriggers({ refresh: newItem});
}
},
setHidden: function (value) {
var me = this,
allowBlank = true,
back;
back = me.callParent(arguments);
if (!value) {
me.onRefreshImg();
allowBlank = false;
}
me.getTextfield().setAllowBlank(allowBlank);
return back;
},
//刷新验证码
onRefreshImg: function () {
if (!this.isHidden()) {
var img = this.getImg();
img.setSrc(this.codeImgUrl + '?time=' + new Date().getTime());
}
}
});

相关sass:

    .password-trigger,
.auth-email-trigger,
.auth-password-trigger,
.auth-envelope-trigger {
&:before {
top: 10px;
left: -18px;
position: relative;
color: $dialog-trigger-color;
font-size: 30px;
} &.password-trigger:before,
&.auth-password-trigger:before {
content: "\f023";
} &.auth-email-trigger:before {
content: "\f007";
} &.auth-envelope-trigger:before {
content: "\f0e0";
}
}

用法:

             xtype: 'fieldVerify',
//验证码地址
codeImgUrl: config.codeImg,
//文本框配置
textfield: {
name: 'captcha',
msgTarget: 'qtip'
},
//文本框内置按钮
refresh: {
cls: 'auth-envelope-trigger fa-refresh'
}

ux.form.field.Verify 验证码控件的更多相关文章

  1. ux.form.field.GridDate 支持快速选择日期的日期控件

    效果如图,亲测6.2.1版本可用 /** *支持快速选择日期的日期控件 */ Ext.define('ux.form.field.GridDate', { extend: 'Ext.form.fiel ...

  2. ux.form.field.KindEditor 所见所得编辑器

    注意需要引入KindEditor相关资源 //所见所得编辑器 Ext.define('ux.form.field.KindEditor', { extend: 'Ext.form.field.Text ...

  3. ux.form.field.SearchField 列表、树形菜单查询扩展

    //支持bind绑定store //列表搜索扩展,支持本地查询 //支持树形菜单本地一级菜单查询 Ext.define('ux.form.field.SearchField', { extend: ' ...

  4. ux.form.field.Year 只能选年的时间扩展

    效果如图,亲测6.2.1版本可用,用法同时间选择控件 //只选择年的控件 Ext.define('ux.picker.Year', { extend: 'Ext.Component', alias: ...

  5. ux.form.field.Month 只能选年、月的时间扩展

    效果如图,亲测6.2.1版本可用,用法同时间选择控件 //月弹窗扩展 //只选月 Ext.define('ux.picker.Month', { extend: 'Ext.picker.Month', ...

  6. ux.form.field.Password 密码与非密码状态切换

    效果如图: 扩展源码: //扩展 //密码按钮扩展 //支持在密码与非密码之间切换 Ext.define('ux.form.field.Password', { extend: 'Ext.form.f ...

  7. ux.form.field.TreePicker 扩展,修复火狐不能展开bug

    /** * A Picker field that contains a tree panel on its popup, enabling selection of tree nodes. * 动态 ...

  8. Extjs4 关于设置form中所有子控件为readOnly属性的解决方案

    之前在网上找了一堆,但那些确实没法用,后来考虑了一下,发现主要是网上提供的假设form中只有一层控件,没有考虑到布局稍微复杂的form情形,此处采用递归的形式实现对form中所有控件(grid及but ...

  9. Android 短信验证码控件

    Android 短信验证码控件,便于项目中使用统一样式,统一提示改动.个人觉得挺好用的 <span style="font-size:18px;">public cla ...

随机推荐

  1. c#访问http接口的"编码"问题

    记一次访问http数据接口的爬坑经历,一般访问一个http接口. 无非就是这么几行代码: HttpWebRequest request = (HttpWebRequest)WebRequest.Cre ...

  2. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  3. HandlerMapping 详解

    HandlerMapping 详解 1. 导言 万丈高楼平地起,SpringMVC的辉煌离不开每个组件的相互协作,上一章详细阐述了SpringMVC整个体系结构及实现原理,知道HandlerMappi ...

  4. Docker + Consul 多数据中心模拟

    Docker + Consul 多数据中心模拟 1. dc1搭建 docker run -d --name node1 -h node1 progrium/consul -server -bootst ...

  5. jsp实现验证码

    在web开发领域里面,验证码是一个比较常见的功能,而归根到底,验证码其实就是一组随机数,或者是一个随机算术 一.基本知识 1.为什么需要验证码? 验证码,很多时候出现在注册页面或者登陆界面,在这些页面 ...

  6. 运行(WIN+R)中能使用的命令:ms-settings:,shell:,cpl,mmc...

    ms-settings: --- DESC --- --- CMD --- Battery Saver ms-settings:batterysaver Battery Saver Settings ...

  7. Moses在Ubuntu14.04平台的安装过程

    平台环境:在windows 7中建立VMware虚拟机,操作系统为Ubuntu_14.04_amd_64 1.安装GIZA++ 安装步骤如下: wget http://giza-pp.googleco ...

  8. python find函数

    Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1 ...

  9. 解决12306.cn网站验证码获取提示“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系“的问题

    https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=sjrand&0.8967564508222368 这是图片的访问网址 大家看清楚 ...

  10. GTD时间管理---非行动性

    一:行动性和非行动有什么区别? 1:非行动性:指的是收集箱中的信息,是先存储后使用,这些信息平时都处于冬眠状态,只是要用到的时候能够找到它就好了.(偏向于处理生活) 2:行动性: 指的是收集箱中的信息 ...