登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
带触发器按钮的输入框
Ext JS开发大全
第1章 Ext JS快速入门示例[4/4]
第12章[12.10]富文本编辑器 CKEditor与Ext JS的整合
第12章[12.10.1] Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
第11章[11.6] Ext JS 自行搭建远端库的包升级版本后找不到的问题解决
[Ext JS 4] 实战之Grid, Tree Gird编辑
ext命令集
第12章[12.3] Ext JSGrid中的超链接列及其功能实现
[Ext JS]textfield添加compositionstart、compositionupdate 和compositionend _os
[Ext JS ] 动添切换字段的必填与非必填
3.1 Ext JS 组件总览
[Ext JS] Grid表格批量编辑的实现
Ext JS 快速开发工具
带触发器按钮的输入框
Ext JS的布尔对象类型处理及便捷方法
Ext JS的Object类型处理及便捷方法
ExtJS RadioGroup(单选按钮组) 使用及注意事项
Ext JS 模拟后端数据实现
ToolTip 实现全介绍
Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
Ext JS应用测试概览
Sencha Studio 监视工具( Inspect Tool)
Ext JS 4 升级指南
Ext JS 如何定义公用方法(单例类 or 静态方法)
Ext JS的模块化开发(Package)
Ext3 -- Form 实例。 用来migrate file 数据到DB用的
ExtJS 3 在Tab下加入Form 实例
Extjs Grid 中给已经添加过Filter的列增加标识
Extjs 实战之 Ext.tree.TreePanel Tree无法显示
Extjs弹出框的异步执行
Grid 动态该表列( reconfigure)的性能改善
Spring Boot Ext JS准前后端框架应用的会话(Session)处理
[Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示
[Ext JS 4] Extjs 之 initComponent 和 constructor的区别
[Ext JS 4] Grid 中的单元格添加Tooltip 的效果
[Ext JS 4] Grid 实战之分页功能
[Ext JS 4] Grid 组件
[Ext JS 4] MVC 应用程序框架
[Ext JS 4] MVC 应用程序框架
发布 [Ext JS 4] contentEL,renderTo, applyTo 释义与区别
[Ext JS 4] 动态加载
[Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
[Ext JS 4] 实战之 Picker 和 Picker Field
[Ext JS 4] 实战之 带week(星期)的日期选择控件(二)
[Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
## [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
[Ext JS 4] 实战之 带week(星期)的日期选择控件
[Ext JS 4] 实战之Chart 坐标控制(单坐标,双坐标)
[Ext JS 4] 实战之Chart, Column Chart 定制颜色
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)
[Ext JS 4] 实战之Grid, Tree Gird 动态添加行
[Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
[Ext JS 4] 实战之Grid, Tree Gird编辑Cell
[Ext JS 4] 实战之Load Mask - 在Grid Reconfigure的使用状况
[Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏
[Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项
[Ext JS 4] 实战之多选下拉单 (带checkbox)
[Ext JS 4] 实战之升级系列一[Ext jS 3-->Ext JS 4]
[Ext JS 4] 实战之将chart导出为png, jpg 格式的文件
[Ext JS 4] 实战之浏览器兼容
[Ext JS 4] 布局之实战二 - 中间区块不会自动伸展 (tab)续
[Ext JS 4] 组件之图表
[Ext JS 4]后台自动产生图档
[Ext JS 4]性能优化
[Ext JS 7 ]7.5 自适应配置 - Responsive Configs
[Ext JS 7] 关联(Association)
[Ext JS 7]事件(Event)
[Ext JS 7]ClassRequire错误解决
[Ext JS 7]的开发模式
[Ext JS 7]基于NPM的开发
[Ext JS ] 动添切换字段的必填与非必填
[Ext JS4] 数据包
[Ext JS4系列]Ext JS4 入门
[Ext JS6] Grid不同列的关联编辑
[Ext JS6] ViewControllers-视图控制器
[Ext JS6]Ext.Template
[Ext JS6]Sencha Cmd
[Ext JS6]编码规范
[Ext JS6]多类型设备开发
[Ext JS6]工作区-Workspace
[Ext JS6]路由(Routing)及使用
[Ext JS6]视图模型和数据绑定
[Ext JS6实战] Ajax获取Tree Store
[Ext JS6实战] Ext.XTemplate
[Ext JS6实战]动态数据绑定
[Ext JS] Sencha Cmd命令参考之二
[Ext JS] Sencha Cmd命令参考之一
[Ext JS] Group Grid-分组网格
[Ext JS] Group Grid-分组网格
[Ext JS]嵌套Grid的实现及注意事项
[Ext JS]SimXhr.js__dc=1659315492151_65 Uncaught TypeError问题分析与解决
[Ext JS]Sencha Studio安装与快速介绍之一
[Ext JS]textfield 添加 compositionstart、compositionupdate 和 compositionend
[Ext JS]图片显示方式
[ExtJS 6]Grid分页工具栏无效问题解决
[ExtJS6]ResponsiveColumn-自适应列布局
[Extjs 4] 类系统
基于Ext JS的模块化应用框架搭建及开发
[Ext JS] 自行搭建远端库的包升级版本后找不到的问题解决-The following versions are available
[Ext JS]鼠标移入移除时弹出和关闭窗口
[Ext JS]富文本编辑器 CKEditor与Ext JS的整合
[Ext JS]可编辑列Grid的全场景开发
['Ext JS]Grid中的超链接列及其功能实现
[Ext JS]Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
[Ext JS]介绍与快速入门1
[Ext JS]实现带动态数字的图标
Spring Boot+Ext JS 实现图形验证码
Ext JS介绍与快速入门2
Ext JS开发基本环境准备与项目创建
[Ext JS]开发模式及快速测试方式
[Ext JS]多类型终端-电脑、移动端(手机、平板)
[Ext JS]基于Ext JS的MVC/MVVM架构的应用开发模式
[Ext JS]Ext JS的类与类体系
[Ext JS]Ext JS组件、容器与布局
[Ext JS]组件与容器的选择与开发
[Ext JS]Ext JS数据模型与数据封装
[Ext JS]Ext JS的控制器类型及使用
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext js]Grid行选择的多种场景和实现方式
[Ext JS]Ext JS类的继承与混合
CmsWing
带触发器按钮的输入框
## 12.12 带触发器按钮的输入框 ### 带触发器按钮的输入框 的实现方式 带触发器按钮的输入框一般是在输入框的右方放置一个按钮, 点击按钮后弹出一个新的窗口, 在窗口中选中某值后,回填到输入框中, 直观的实现方式是在使用fieldcontainer 包含一个 textfield 和一个button, 实现的效果如下 ![](/upload/picture/2022-09-27/upload_a739dc36319c8bf00c3a7d05adc81b16.png) 为了确保选择的数据的有效性,一般通过 readOnly 属性设置输入框为只读。 如果在应用开发中, 该类型的组件会被经常使用, 可以使用 fieldcontainer 封装一个SelectFiled 的组件类型, 需要注意的是该类型的值的获取和设置需要处理, 否则放在form 中会取不到值。 其实除了上面的方式, Ext JS本身的textfield 本身就可以达成这种效果。方式是设置triggers的配置。 实现效果类似: ![](/upload/picture/2022-09-27/upload_6e5fefa850a5bfbb531aad55fe585040.png) 该方式实现起来更简单, 组件的显示效果也更简洁。也是本篇推荐和介绍的方式。 ### 基于textfield 实现带触发器按钮的输入框 以上效果的输入框实现的代码如下: ```javascript triggers:{ select: { cls: 'x-fa fa-search', handler: function(){ Ext.create('Ext.window.Window',{ width:300, height:400, title:'选择窗口', modal:true }).show(); } } } ``` triggers 是触发器的意思, 这里是复数, 也就是可以配置多个触发器。 select 这是触发器的名字, 这个名字可以随意取。 在单个触发器中, 使用 cls 配置显示的图标, handler 配置点击后的动作。 如何设置输入框不能随意输入 ? Ext JS对于 textfield 的实现, 其实也就是在 input 元素之外定义了一些 div 及样式, 其最终产生的源码如下: ![](/upload/picture/2022-09-27/upload_1e66f36f0188a3a79bf5723b0eec7e10.png) 设置输入框不能随意输入, 首先想到使用readOnly , 但是使用之后, 后面的触发器图标没有了。看起来只能设置textfield的 input 框的 readOnly , 标准 HTML的input 的设置只读的属性如下: readonly="readonly" 。 对于textfield , 可以使用inputAttrTpl 添加input 的设置readOnly, 设置类似: ```javascript inputAttrTpl:'readonly="readonly"', ``` 但是这个设置无法生效, 看起来默认会设置回非readOnly。 因为textfield 组件的readOnly 属性不是true。 既然input 的readOnly 会受textfield 的影响, 是否可以换成disabled 进行设置呢? 设置如下: ```javascript inputAttrTpl:'disabled', ``` 1 经测试, 以上方法可行。 定义一个公用组件的代码类似: ```javascript Ext.define('ExtjsdevEncy.view.com.SelectField', { extend: 'Ext.form.field.Text', xtype: 'selectfield', inputAttrTpl:'disabled', triggers:{ select: { cls: 'x-fa fa-search', handler: function(){ // 功能 } } }}); ``` ### Tab页中特定场景使用问题 以上定义的selectfield 类型的组件在下面的场景中会出现输入框又变成可输入的状况: 当selectfield 使用在标签页面板的某个Tab下, 在该Tab上使用了setDisable() 进行了切换时, 该selectfield 的输入框会从不可编辑变为可编辑。 这个原因是什么呢? 其实也不难理解,和上面分析的无法设置输入框为readOnly 的原因类似, 都是组件类本身的属性变化,会导致 input 元素的变化。 解决方法是不能设置Tab页中实际面板的disable , 但是可以通过设置 tab 的disable 实现,代码片段类似: ```javascript var tabBar = tabpanel.getTabBar(); var tabBarItems = tabBar.query('tab'); tabBarItems[0].setDisabled(true); tabBarItems[1].setDisabled(false); ``` 关于TabPanel可以参考“ 3.8 TabPanel 标签面板 ” 的介绍。 ### 本篇示例演示地址: https://osxm.github.io/extjs_dev_ency/#selectfielddemo
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们