`

ExtJs之FormPanel篇

    博客分类:
  • ext
阅读更多
表单时是web中常见的元素,Ext中的表单也是特别丰富的,接下来我们一块看看表单的相关内容。

还是先看一下代码和效果:


Ext.onReady(function(){
    var fp=new Ext.form.FormPanel({ //注意:Ext.form.FormPanel=Ext.FormPanel
        title:'用户登录',
        width:300,
        //height:250,
        bodyStyle:'padding:5px 5px 0',
        renderTo:'divFormPanel',
        frame:true,//在此,这个属性就很重要了,如果不为true,你会看到下面的button和panel看起来是分开的
        url:'login.aspx',//提交地址
        method:'post',//提交方法
        defaults:{ //在这里同一定义item中属性,否则需要各个指明
            xtype:'textfield',
            labelAlign:'left',
            labelWidth:80,
            width:100
        },
        items:[
            {
                fieldLabel:'用户名',
                xtype:'textfield',//Ext基本类型,也可以用其对应的form元素代替
                name:'userName',
                id:'userName'
                //width:100
            },
            {
                fieldLabel:'密码',
                //xtype:'textfield',//Ext基本类型,也可以用其对应的form元素代替
                inputType:'password',
                name:'userPwd',
                id:'userPwd'
                //width:100
            }
        ],
        buttonAlign:'center',//按钮对其方式
        buttons:[
            {
                text:'确定'
            },
            {
                text:'取消',
                handler:function(){//点击取消按钮的操作事件
                    fp.hide();
                }
            }
        ]
    });
});


FormPanel也比较好用,但是我认为我们有必要就上面xtype和inputType说几点。

大家其实很多时候会发现,在Ext组件中(对于所有容器组件[这里就是可以有子组件的组件])items里面基本上有两种存在形式,一种就是像上面一样我们直接以Json的形式进行配置;另一种就是既然items中是一个个item,我们可以定义一个对象放到里面,例如假设在一个panel中还有一个子panel,我们就可以直接var pn=new Ext.Panel({…});然后放到items中。上面的话我再强调一下,它不仅仅针对FormPanel,而是对于所有容器组件都是这样。不妨看一个例子,我觉得大家经常看到这样的代码:

var panel=new Ext.Panel({   
renderTo:"divPanel",   
title:"我的面板",   
width:400,   
height:300,   
items:[       
new Ext.Panel({title:'子panel1',html:'子panel1内容'}),       
new Ext.Panel({title:'子panel2',html:'子panel2内容'})   
]
});


以至于很多初学者认为像上面的代码不能够写成下面的形式:

var panel=new Ext.Panel({
    renderTo:"divPanel",
    title:"我的面板",
    width:400,
    height:300,
    items:[
        {…},
        {…}
    ]
});

其实这是对于xtype不太了解的原因。Ext中xtype和Class(类)是一一对应的,所以既然上面items中是panel对象,那么就有对应的xtype,事实上我们可以知道它对应"panel",那么既然是这样,上面的代码当然可以写成第第一种存在形式:

var panel=new Ext.Panel({
    renderTo:"divPanel",
    title:"我的面板",
    width:400,
    height:300,
    items:[
        {xtype:'panel',title:'子panel1',html:'子panel1内容'},
        {xtype:'panel',title:'子panel2',html:'子panel2内容'}
    ]
});

事实上从本质上来讲上面两种情况是一样的,只是表现形式不同而已,那么对于上面的代码如何用第二种方式呢,你会问,像{    fieldLabel:'用户名',    xtype:'textfield',//Ext基本类型,也可以用其对应的form元素代替name:'userName',id:'userName'    //width:100    }这样的代码是什么对象呢?其实它对应的是"Ext.form.TextField"。这里放上一张对应表:

xtype


box
Ext.BoxComponent

button
Ext.Button

colorpalette
Ext.ColorPalette

component
Ext.Component

container
Ext.Container

cycle
Ext.CycleButton

dataview
Ext.DataView

datepicker
Ext.DatePicker

editor
Ext.Editor

editorgrid
Ext.grid.EditorGridPanel

grid
Ext.grid.GridPanel

paging
Ext.PagingToolbar

panel
Ext.Panel

progress
Ext.ProgressBar

propertygrid
Ext.grid.PropertyGrid

slider
Ext.Slider

splitbutton
Ext.SplitButton

statusbar
Ext.StatusBar

tabpanel
Ext.TabPanel

treepanel
Ext.tree.TreePanel

viewport
Ext.Viewport

window
Ext.Window

toolbar
Ext.Toolbar

tbbutton
Ext.Toolbar.Button

tbfill
Ext.Toolbar.Fill

tbitem
Ext.Toolbar.Item

tbseparator
Ext.Toolbar.Separator

tbspacer
Ext.Toolbar.Spacer

tbsplit
Ext.Toolbar.SplitButton

tbtext
Ext.Toolbar.TextItem

form
Ext.FormPanel

checkbox
Ext.form.Checkbox

combo
Ext.form.ComboBox

datefield
Ext.form.DateField

field
Ext.form.Field

fieldset
Ext.form.FieldSet

hidden
Ext.form.Hidden

htmleditor
Ext.form.HtmlEditor

label
Ext.form.Label

numberfield
Ext.form.NumberField

radio
Ext.form.Radio

textarea
Ext.form.TextArea

textfield
Ext.form.TextField

timefield
Ext.form.TimeField

trigger
Ext.form.TriggerField

好了,说了那么多xtype,inputType还没有说呢。我们说xtype和class是对应的,当然表单中xtype和class都有inputType属性,而且最为有意思的是对于form中的元素inputType的取值范围是一样的,什么意思呢?我们还看例子(我们直接对上面的代码精简好了,这个例子中我们就用class形式好了):

var fp=new Ext.form.FormPanel({
    title:'用户登录',
    width:300,
    bodyStyle:'padding:5px 5px 0',
    renderTo:'divFormPanel',
    frame:true,
    items:[
        new Ext.form.Radio({
            boxLabel:'男',
            name:'sex',
            id:'male'
        }),
        new Ext.form.Radio({
            boxLabel:'女',
            name:'sex',
            id:'sex_female'
        })
    ]               
});


上面这个例子很简单(不太好看,因为到这里还没有说到form中相关控件,所以没有在布局上花功夫),也很容易理解,就是Radio控件吗。但是我修改过inputType之后呢:

var fp=new Ext.form.FormPanel({
    title:'用户登录',
    width:300,
    bodyStyle:'padding:5px 5px 0',
    renderTo:'divFormPanel',
    frame:true,
    items:[
        new Ext.form.Radio({
            boxLabel:'男',
            inputType:'textfield',
            name:'sex',
            id:'male'
        }),
        new Ext.form.Radio({
            boxLabel:'女',
            inputType:'file',
            name:'sex',
            id:'sex_female'
        })
    ]               
});

可以说上面的代码如果对于初学者来说肯定想不到一个radio变成了textfield,另一个变成了file。不是创建的Radio对象吗?怎么成了其他的控件,这个就是Ext中inputType的特殊之处。

好了,就先到这里吧!

分享到:
评论

相关推荐

    extjs中的formPanel以及表单的应用

    FormPanel 是 ExtJS 中的一个核心组件,用于创建和处理表单元素,包括输入字段、按钮、选择框等。它提供了丰富的功能,如数据验证、远程提交、异步加载等,是构建用户交互界面的关键部分。 在ExtJS中,FormPanel是...

    ExtJs4.0 表单提交Demo

    ExtJs 4.0的FormPanel对象提供了`getForm()`方法获取表单实例,然后通过`form.submit()`或`form.serialize()`方法完成数据的序列化。 4. **表单提交过程** - **创建表单组件**:首先,定义一个FormPanel,并在其...

    Extjs4的FormPanel从后台load json数据的要点

    在本篇文章中,我们将深入探讨如何使用Extjs4中的FormPanel组件从后台加载JSON数据,并将其映射到表单的各个字段中进行显示。这是一项非常实用的技术,尤其是在需要动态填充表单的情况下。 ### 一、Extjs4 ...

    ExtJs中表单formPanel的横向布局

    本文将深入探讨如何在ExtJs中使用`FormPanel`组件结合`form`和`column`布局属性来实现横向布局,即在一个表单中元素能够按照列分布,形成一种更为直观和用户友好的界面设计。 ### 一、理解`FormPanel`及其属性 `...

    ExtJS改变默认字体大小的几种方式

    ExtJS 是一个流行的JavaScript框架,用于构建富客户端应用程序。它提供了丰富的组件库,包括按钮、表格、窗口等,使得开发者可以构建出具有复杂交互和美观界面的应用。在使用ExtJS时,有时我们需要根据用户需求或...

    formpanel extjs

    extjs formpanel学习,秘诀,笔记

    extJs中关于formPanel动态添加组件的验证问题

    这篇博客将探讨如何解决EXT JS中关于FormPanel动态添加组件的验证问题。 首先,让我们理解EXT JS FormPanel的基本结构。一个FormPanel由多个字段(field)组成,每个字段都有自己的验证规则。这些规则可以是简单的...

    FCKeditor结合extjs实例

    标题 "FCKeditor结合extjs实例" 描述的是一个实际项目中使用的技术组合,涉及到的主要是两个前端富文本编辑器库:FCKeditor 和 ExtJS。这个实例表明在开发企业级网站时,如何将这两者有效地整合以实现复杂的用户界面...

    Extjs4添加tooltip

    Extjs4的textfield控件竟然没有tooltip悬浮提示,这应该算是个bug吧。网上查了很多,也没有方案。后来自己通过查询并整理出这个方案,终于实现了。 思想如下: 在textfield渲染时注册mouseover事件,然后在其中调用...

    ExtJs 动态添加表单

    ExtJS 是一个强大的JavaScript库,专门用于构建富客户端应用程序,特别是Web应用的用户界面。它提供了丰富的组件模型、数据绑定机制以及丰富的API,使得开发者能够创建功能丰富的动态表单。在"动态添加表单"这个主题...

    EXTJS修改颜色实例源码

    在提供的实例源码中,我们看到的是如何在 EXTJS 中修改颜色的示例,具体涉及到 EXTJS 的 FormPanel 和 ComboBox 组件,以及自定义事件处理。 1. **FormPanel**: - `Ext.form.FormPanel` 是 EXTJS 中用于创建表单...

    ExtJS笔记----FormPanel的使用

    NULL 博文链接:https://lucky16.iteye.com/blog/1490278

    简单的两种Extjs formpanel加载数据的方式

    在ExtJS中,`Ext.form.Panel`(或简称为`formpanel`)是一种非常重要的组件,用于创建表单来收集用户输入的数据。本文将详细介绍两种在ExtJS formpanel中加载数据的方法,以供开发者参考。 ### 方法一:使用`...

    extjs上传全代码

    1. **EXTJS FormPanel**: 这是EXTJS中用于创建表单的组件,可以包含各种表单元素,如文本框、按钮等。在文件上传场景中,FormPanel通常用于封装文件输入字段。 2. **FileField组件**: 这是EXTJS中的一个特殊表单...

    ExtJs 文本框后附件单位

    ### ExtJs 文本框后附件单位 #### 背景介绍 在使用ExtJS进行界面开发的过程中,常常会遇到需要在文本框后面附加单位的情况。例如,在输入数量时需要显示“个”、“人”等单位。这样的设计不仅提高了用户体验,还...

    extjs之颜色选择器的使用

    7. **与其他组件集成**:ColorField 可以轻松与其他EXTJS 组件结合,如GridPanel、FormPanel 等,提高应用程序的交互性。 8. **无障碍性**:EXTJS 考虑到无障碍性,ColorField 也支持屏幕阅读器和其他辅助技术,...

    轻松搞定Extjs 带目录

    表格组件GridPanel是Extjs中的亮点之一,它不仅可以展示大量数据,还支持复杂的列模型和行操作。此外,GridPanel的分页功能和扩展组件如摘要行、可展开行、分组视图等,让数据的展示更加直观和易于管理。 通过学习...

    批量上传文件 EXTJS文件上传 上传组件

    EXTJS的上传组件通常是基于EXTJS的FormPanel和FileField组件构建的,FileField组件可以设置为多选模式,从而支持批量选择文件。 首先,我们需要创建一个EXTJS的FormPanel实例,其中包含一个配置为`multiple: true`...

    extjs4如何给同一个formpanel不同的url_.docx

    在EXTJS4中,FormPanel是一个非常重要的组件,用于创建包含表单元素的用户界面。在某些场景下,我们可能需要一个FormPanel实例能够根据不同的情况提交到不同的URL。这个问题可以通过灵活地设置和操作FormPanel及其...

Global site tag (gtag.js) - Google Analytics