Sencha Touch 2 快速入门系列(三)-- 组件之表格(Forms)

sencha-touch grid 代码 sencha-touch grid 最新的代码 立即下载

本文已添加至Sencha Touch 2快速入门系列索引:http://blog.youkuaiyun.com/ardy_c/article/details/7544470

转载请注明出处:http://blog.youkuaiyun.com/ardy_c/article/details/7497330



在应用中,很多时候需要和用户进行一些交互。表单(Forms)这个东西给我们提供了一个很好的接口。相信大家对传统的HTML表单已经非常熟悉。而Sencha Touch 2中的表单和传统的HTML表单没有太大区别。也正因为Sencha Touch 2是基于HTML5建立的,它的表单是对HTML5的表单功能进行了封装,提供了一些可选择的验证和数据提交方式,并提供了一套漂亮的外观。这一节,就给大家介绍一下表单的使用方法。


建立一个表单(Forms)

建立一个表单很简单,我们先上代码:

var formPanel = Ext.create('Ext.form.Panel', {
    fullscreen: true,

    items: [{
        xtype: 'fieldset',
        items: [
            {
                xtype: 'textfield',
                name : 'name',
                label: 'Name'
            },
            {
                xtype: 'emailfield',
                name : 'email',
                label: 'Email'
            },
            {
                xtype: 'passwordfield',
                name : 'password',
                label: 'Password'
            }
        ]
    }]
});


表单对应的类是Ext.form.Panel,该类直接继承于Ext.Panel。建立一个该类的实例,该实例相当于容器的存在,然后在其内部添加各种用于输入信息的组件(就是写html时,在form标签里面添加各种input标签、textarea标签等等)。

上面的代码中,作为formPanel子元素的是一个名为fieldset的组件。它的作用在于把各个用于输入的组件包装起来,使它们更加整齐美观。你甚至可以为它设置title属性,它自动在表单的顶部添加该title属性的值作为表单的标题,让用户更直接地认识到这个表单的用途。而在fieldset组件里,我们加了三个用于输入的组件--textfield、emailfield和passwordfield。其中email是HTML5新加入的input标签里type为email的输入类型,另外两个相信不用我在这里详说,你也会懂的。这样就建立一个最简单的表单,你可以执行下面完整代码,预览这段代码所生成的效果。完整代码如下:

Ext.application({
    name: 'sample',

    launch: function() {
        var formPanel = Ext.create('Ext.form.Panel', {
            fullscreen: true,
        
            items: [{
                xtype: 'fieldset',
                title: 'My first form',
                items: [
                    {
                        xtype: 'textfield',
                        name : 'name',
                        label: 'Name'
                    },
                    {
                        xtype: 'emailfield',
                        name : 'email',
                        label: 'Email'
                    },
                    {
                        xtype: 'passwordfield',
                        name : 'password',
                        label: 'Password'
                    }
                ]
            }]
        });

        Ext.Viewport.add(formPanel);
    }
});


完善表单

就这样,我们成功建立了一个表单。是不是很简单?就是这么简单!当然,这还不是一个完整的表单。下面,我们一起来完善一下这张表单。

Ext.application({
    name: 'sample',

    launch: function() {
        var formPanel = Ext.create('Ext.form.Panel', {
            fullscreen: true,
        
            items: [{
                xtype: 'fieldset',
                items: [
                    {
                        xtype: 'textfield',
                        name : 'name',
                        label: 'Name'
                    },
                    {
                        xtype: 'emailfield',
                        name : 'email',
                        label: 'Email'
                    },
                    {
                        xtype: 'passwordfield',
                        name : 'password',
                        label: 'Password'
                    }
                ]
            }]
        });
        
        formPanel.add({
            xtype: 'toolbar',
            docked: 'bottom',
            layout: { pack: 'center' },
            items: [
                {
                    xtype: 'button',
                    text: 'Set Data',
                    handler: function() {
                        formPanel.setValues({
                            name: 'Ed',
                            email: 'ed@sencha.com',
                            password: 'secret'
                        })
                    }
                },
                {
                    xtype: 'button',
                    text: 'Get Data',
                    handler: function() {
                        Ext.Msg.alert('Form Values', JSON.stringify(formPanel.getValues(), null, 2));
                    }
                },
                {
                    xtype: 'button',
                    text: 'Clear Data',
                    handler: function() {
                        formPanel.reset();
                    }
                },
                {
                    xtype: 'button',
                    text: 'Submit',
                    handler: function() {
                        formPanel.submit({
                            url: 'testSubmit.php',
                            method: 'POST',
                            success: function() {
                                alert('form submitted successfully!');
                            }
                        });
                    }
                }
            ]
        });
    }
});

上面的代码是在原来的例子的基础上建立的,通过formPanel.add方法追加了一个子组件,类型是toolbar。顾名思义,添加toolbar就是为这个formpanel增加一个工具条。其中docked属性,是指固定停靠在哪里(顶部top, 底部bottom, 左边left, 右边right 四个选项)。上面选择停靠在bottom,就是底部。这里的layout属性被传入的是一个数据对象,里面设置的pack是指容器内部子元素的对齐方式(左对齐start,居中center,右对齐end)。在追加的toolbar里面,我们添加了四个按钮组件作为toolbar的子元素。

第一个按钮,设置text属性为Set Data,该属性是用于设置按钮上显示的文本内容。handler属性,是用于设置响应按钮点击事件的处理方法。这里的处理方法就是为表单填入一些固定的信息。其中,formPanel.setValue方法是用于设置表单内各项的值,传入参数是一个数据对象,数据对象内每一个属性名称必须和form内的每项的name属性对应,否则设值失败。

第二个按钮,响应点击事件的处理方法是用alert的方式显示表单内各项的值。Ext.Msg.alert 是一个静态方法,作用是弹出一个消息框,第一个参数是这个框的标题文本,第二个参数是需要显示的消息体。formPanel.getValues方法,是获取formPanel内部全部项的值。

第三个按钮,很简单、直接,重置表单,和html的type=reset一样效果。

第四个按钮,用于提交表单。formPanel.submit()方法实现在提交表单的操作,我们传进去了一个数据对象,里面设置了表单要提交的地址(url),提交方式(method),响应提交成功后的处理方法(success)。有一点需要注意的是,提交后响应页面需要返回 {"success":true} 的json,才会被认为是提交成功。

一张完整的表单出来了,大家尝试一下,看看是怎样的效果。当然,你需要自己准备一个处理提交的响应页面喔。




Ext Touch 利用DataView 创建树形 利用DataView 创建多选树形.。前台根据JSON创建node 立即下载

相关推荐

当我们谈论Unidbg时我们在谈什么

文章目录一、前言二、使用Unidbg的工作量是什么三、补环境补的是什么3.1 运行环境缺失3.2 上下文缺失四、Unidbg 不是所有情况下最优的解决方案五、Unidbg在大多数情况下是好的方案六、Unidbg和风控无关七、尾声 一、前言 这是一篇漫谈Unidbg的文章,我对Unidbg的使用和理解都还很浅,日后会更新或修改看法,欢迎大佬指点,也期待同侪讨论。 二、使用Unidbg的工作量是什么 我们常规使用Frida + IDA的动静态分析中,工作可能是这样的 找线索→Frida Hook验证→验证成功继

lilac的博客 5788

[Sencha ExtJS & Touch] 表格(Ext.grid.Grid) 和 表格视图选项(Ext.grid.plugin.ViewOptions) 使用的时候要注意的问题

原文地址: 下图是Sencha ExtJS6 Modern 的表格(Grid),Sencha Touch 也类似: 如果添加了插件Ext.grid.plugin.ViewOptions,那么长按列头,就会弹出下面的(Sencha Touch是在列头上从最右边往左滑): (Ext.grid.plugin.ViewOptions的功能就是支持调节表格列的顺序、

小桥流水丿小溪 1877

OPC UA 协议详解

OPC UA(统一架构)是新一代工业自动化标准通信协议,替代传统OPC Classic,具有跨平台、高安全性、标准化等优势。基于TCP协议,支持全平台部署,采用面向对象架构组织数据,提供实时读写、事件订阅、历史数据访问等功能。作为工业4.0核心协议,适用于智能制造、数字孪生等场景,能实现多品牌设备统一接入。相比Modbus和MQTT,OPC UA协议更规范安全但复杂度较高,是大型工业集群互联的主流选择。

eastyuxiao的专栏 729

react后台管理系统表单页面编辑切换的时候提示,很强

后台管理系统很常见的就是这种编辑页面,我是用antd的。因为用户没填完没点保存实际上填的数据并没有保存起来,当时想着切换的时候先存起来,点回去的时候再复原,但是考虑到可行性,不太现实,直接提示你离开就没了,要离开请随意。 然后开始着手逻辑,领导的意思是表单里面填了东西的切换页面就要提示,当然除开保存按钮,那我赶紧去查了form的属性,直接贴代码: 写个函数传两个参数进去 // ...

feizhong_web的博客 1722

USB PD快充功率监测仪:高精度嵌入式USB电压电流测量终端

USB供电已从数据接口演进为关键电源总线,尤其在PD快充场景下,工程师亟需对5V–20V宽压范围内的实时电压、电流及瞬时功率进行精准捕获。其底层原理依赖高共模抑制比的高边电流检测与分压采样+ADC数字化处理,结合LDO低噪声供电保障模拟链路精度。该类设备的技术价值在于以低成本实现协议无关的‘电气层可视化’,规避商用ASIC测试仪的黑盒局限,支撑PD充电验证、电源设计调试与教学实验等工程实践。本文介绍的开源USB表即基于N32G430 MCU与INA199电流检测芯片,覆盖USB-C输入/输出双通道监测,具备

weixin_42174098的博客 208

TSMC40nmLP版图实战:从Design Rule解读到Cadence高效布局布线

本文详细解析了TSMC40nmLP工艺的版图设计实战,从Design Rule解读到Cadence高效布局布线技巧。重点介绍了40nm工艺中的关键设计规则,如最小线宽、间距规则和深N阱规则,并分享了Cadence Virtuoso中的高效工作流和射频模块设计技巧,帮助工程师提升版图设计效率和质量。

weixin_29250403的博客 378

Sencha Touch学习笔记(九)表单

表单是在Sencha Touch中特别常用的一部分,大部分的App都会要去用户输入登录信息,这就要用表单来实现。在一些实际项目中,会有更复杂的信息需要人为的添加修改,也需要表单。 装载表单相关组件的容器有个专用的Ext.form.Panel,下面来写个简单的:Ext.application({ name: 'Sencha', launch: function() {

hewei12x的专栏 444

Windows/Linux双平台指南:3种方法快速释放被占用的GPU内存(含任务管理器替代方案)

本文详细介绍了在Windows和Linux双平台下快速释放被占用GPU内存的3种方法,包括任务管理器替代方案。从基础操作到高阶技巧,帮助用户彻底解决GPU内存驻留问题,提升计算资源利用率。特别适用于深度学习开发者和服务器管理员处理显存泄漏等常见问题。

j0k1l2m3n的博客 262

sencha touch list(列表)、 store(数据源)、model(模型)详解

先从model讲起 代码如下: 1 //求职 2 Ext.define('app.model.Staff', { 3 extend: 'Ext.data.Model', 4 config: { 5 fields: [{ 6 name: 'id', 7 type:...

209

十九、帧间预测编码_2、解码、显示顺序与图像管理、参考帧管理

一、基本概念 1.1H.264的解码顺序和显示顺序: 解码过程中,每一帧的数据按照相应的NAL Unit在码流中的顺序传入解码器进行解码 由于B帧的存在,视频帧在输出时会进行顺序重排 1.2frame_num与POC frame_num:表示解码顺序 POC:表示显示顺序(picture_order_count) 在H.264的码流中,表示解码顺序和显示顺序分别有相应的语法元素表示。这两个值都会在码流中保存,并在读取slice信息时解析(SliceHeader中) 1.3参考帧列表 某一帧图像在解

叮咚的博客 1330

在 TASKPROCESSING 上为 ABAP OData 服务添加多个系统别名:从原理到落地的完整实践

本文面向SAP Gateway与ABAP开发者,详细讲解如何在TASKPROCESSING OData服务上添加系统别名。首先介绍了系统别名的概念与设计初衷,阐述了添加别名的业务场景需求,包括多系统接入、用户分流和灰度发布等。随后提供了标准配置步骤,从SPRO路径到具体操作说明,并分享了三个实际案例说明如何实现跨区域统一待办、按用户角色分流和灰度发布。最后给出了验证方法和常见问题解决方案,帮助开发者掌握这项基础但关键的配置技能,实现服务路由的可控管理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 137

Sencha Touch 2 学习笔记(三)----Form表单容器及其子组件

Sencha Touch 2 封装了很多的UI组件,今天标记下学过的组件---formPanel。var formPanel=Ext.create( 它的包名为Ext.form.Panel。所以创建的时候代码如下: view sourceprint? 1."Ext.form.Panel", 2.{ 3.fullscreen:true, 4.items:[ 5.{}

albert的专栏 1671

【软考中级网络工程师】知识点之常用网络诊断和配置命令

本文聚焦软考中级网络工程师必备的网络诊断和配置命令,详细解析 ipconfig、ping、arp 等 11 类核心命令。涵盖各命令的功能、语法、常用参数及应用场景,如 ipconfig 查看配置、ping 测试连通性等。还通过图呈现命令执行逻辑与流程,助读者理解原理。最后结合软考考点回顾重点并提供真题练习,为备考和实际运维提供全面指导,是掌握网络命令的实用参考。

邓邓子的博客 1557

Sencha Touch的Form使用

很多App都需要使用forms来获取用户的输入。ST的forms是封装了html5的forms,并且添加了一下验证和提交数据功能。除此之外,还更容易将field以更好的表现形式布局出来。因为forms中已经默认对field进行了布局排列。 Form Panel 提供一组form fields 和很便利的方式去加载和保存数据。使用一个form panle 包含了一组你需要展示的fields,如下...

weixin_30508309的博客 154

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Sencha-组件-Forms(表单)(官网文档翻译15)

Sencha-组件-Forms(表单)(官网文档翻译15) 大多数应用程序需要用户输入的表单的使用。在煎茶触摸的形式是正常HTML5周围的包装形式,与其他选项验证和提交数据,再加上一个简单的方法奠定字段在一个赏心悦目的视觉风格。 创建一个表格 的形式面板...

weixin_34238642的博客 111

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

sencha-touch-1.1如何动态更新panel的title

Ext.getCmp('line123').descriptionPanel.setTitle(instance.get('MetricName')); Ext.getCmp('line123').headerPanel.setActiveItem(1, { type: 'fade', direction: 'left'

CF西西的专栏 1091

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

sencha/extjs 动态创建grid表格

//创建普通表格 id,父容器,标题,json数据字符串,列名(逗号分隔),json数据key即store的fields属性(逗号分隔) function createCommonTable(id, container, fieldLabel, value, columns,dataIndexs) { if(typeof(container)!="object") ...

weixin_30883311的博客 220

sencha-touch2.0 mvc中使用grid注意

Sencha Touch 交流 QQ 群 224711028 欢迎您的加入。 mitchellsimoens / Ext.ux.touch.grid 地址:https://github.com/mitchellsimoens/Ext.ux.touch.grid 使用时注意事项:1.将Ext.ux.touch.grid这个文件夹复制到你的应用的根目录下: 2.在view中不可直

CF西西的专栏 4079

Ext JS 6开发实例(三) :主界面设计

在上文中,已经将CMD创建的应用程序导入到项目里了,而且也看到默认的主界面了,今天的主要工作就是修改这个主界面,以符合项目的需要。除了设计主界面,还有一些其他的东西需要配置一下。 添加本地化包 打开app.json文件,找到requires,代码如下: "requires": [ "font-awesome" ], 以上代码说明项目默认已经...

weixin_33825683的博客 507

sencha touch formPanel 和fieldSet 的setRecords方法

formPanel有setRecord方法。不过当formPanel被放在items中时,注意布局方式用layout:'fit'才行,用layout:‘vbox’会显示不出来 fieldSet 在beta3版才有setRecord方法, BETA2或以前不具有setRecord的方法。   参考: http://webtest.sencha.com/forum/archive/index

hualizide的专栏 1514
上一篇: Sencha Touch 2 快速入门系列(二)-- 组件(Components)
下一篇: Sencha Touch 2 快速入门系列(四)-- 组件之标签面板(TabPanel)
ardy
博客等级 码龄20年 35粉丝 10原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值