//验证码控件
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. [MFC] MFC 打开HTML资源(用ID版,也可加载到自己的web控件上)

    @ ^ @:如果是加载到web控件上,就把注释掉的解除注释(改为web控件点后面的函数),把下一句注释 BOOL Button::LoadFromResource(UINT nRes){//打开网页加 ...

  2. Hexo搭建Github静态博客

    1. 环境环境 1.1 安装Git 请参考[1] 1.2 安装node.js 下载:http://nodejs.org/download/ 可以下载 node-v0.10.33-x64.msi 安装时 ...

  3. 找出字符串中第一个不重复的字符(JavaScript实现)

    如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. //找出字符串中第一个不重复的字符 // firstUniqueChar("vdctdvc"); --& ...

  4. 我们可以用SharePoint做什么

    前言 不知不觉作为一个SharePoint的开发人员若干年了,从SharePoint api 开始学习,到了解SharePoint的结构,逐渐一点点了解sharepoint的体系:从SharePoin ...

  5. [2]. jekyll安装与应用

    一.ruby安装 这里在win下安装ruby,对应自己电脑的操作系统位数,如我的是64位,对应下载Ruby 2.0.0-p353 (x64)这个版本的ruby.然后安装过程就很简单了: 命令行下输入r ...

  6. 样式中的url加载探疑

    当一个项目多人维护,特别是接手别人的项目,而项目又在改之又改的基础上再改,我一直遵循,别人的样式我不动的原则,尽量不因为一时不察,导致整站或部分页面出现错位的现象,因些在修改样式与写样式时都是在原有的 ...

  7. js解析格式化json日期

    代码: function jsonDateFormat(jsonDate) {//json日期格式转换为正常格式    try {        var date = new Date(parseIn ...

  8. (一)MVC5干货篇,目录和路由

    MVC目录结构概述 文件夹或文件 描述 备注 /App_Data 此文件夹用于存放私有数据,如XML,或者SQL Server Express\SQLite的数据库文件,或其他基于文件的存储库 IIS ...

  9. APP顶号逻辑

    登录的接口login.do接口上需要记录关键的信息:userId.设备型号(Android|iPhone).登录时间.登录IP.设备唯一标识(UUID) 当在另外一台新设备上登录同一帐号时,将user ...

  10. Find Minimum in Rotated Sorted Array leetcode java

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...