`
hn2002
  • 浏览: 59175 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext.FormPanel 4

    博客分类:
  • ext
阅读更多

第四行的两个输入框主要是测试通过 vtypes 属性来验证输入框的输入的:

{

            columnWidth:.5,

            layout: 'form',

            border:false,

            items: [{

                xtype:'textfield',

                fieldLabel: ' 电子邮件 ',

                name: 'email',

                vtype:'email',

                allowBlank:false,

                anchor:'90%'

            }]

        },{

            columnWidth:.5,

            layout: 'form',

            border:false,

            items: [{

                xtype:'textfield',

                fieldLabel: ' 个人主页 ',

                name: 'url',

                vtype:'url',

                anchor:'90%'

            }]

         }]

    }

这里的定义和普通的文本输入框没什么区别,只是多了一个 vtypes 的属性定义。 Vtypes 里总共定义了 email url alpha alphanum 四种类型数据格式, email url 这个不用介绍了,呵呵。 alpha 是字母和下划线的组合, alphanum 是字母、下划线和数字的组合。

下面要加入一个 tabpanel ,加入 3 tab 页。

{

        xtype:'tabpanel',

        plain:true,

        activeTab: 0,

         height:235,

        defaults:{bodyStyle:'padding:10px'},

        items:[]

}

要注意的是,这个 tabpanel 不是在上面 coulmn items 里加的,因为不在 column 里。我们加在 formpanel 里。把 item 类型设置为 'tabpanel' 就行了,然后将标签页头的背景设置为透明的( plain:true ),当前活动 的标签页是第一页( activeTab: 0 ),高度设置为 235px height:235 ), tab 页的面板使用内补丁 10px defaults:{bodyStyle:'padding:10px'} )。

好了,现在在 tabpanel items 加入标签页。第一页主要有两个输入控件,一个是 vtypes 类型 alphanum 的登录输入框和一个密码输入框。

{

            title:' 登录信息 ',

            layout:'form',

            defaults: {width: 230},

            defaultType: 'textfield',

 

             items: [{

                fieldLabel: ' 登录名 ',

                name: 'loginID',

                allowBlank:false,

                vtype:'alphanum',

                allowBlank:false

            },{

                          inputType:'password',

                 fieldLabel: ' 密码 ',

                name: 'password',

                allowBlank:false

            }]

        }

在标签定义了,设置了标签标题是登录信息( title:' 登录信息 ' ),控件容器是 formlayout layout:'form' ),控件的默认宽度是 230px defaults: {width: 230} ),默认控件类型是 textfield defaultType: 'textfield' )。

两个控件的定义与前面的 textfield 定义没什么区别,只是密码输入框需要定义 input 控件的类型为 password inputType:'password' )。两个控件都不允许为空( allowBlank:false )。

第二个标签页里有 numberfield timefield textfield 三个控件:

{

            title:' 数字时间字母 ',

            layout:'form',

            defaults: {width: 230},

             defaultType: 'textfield',

 

            items: [{

                   xtype:'numberfield',

                fieldLabel: ' 数字 ',

                name: 'number'

            },{

                  xtype:'timefield',

                fieldLabel: ' 时间 ',

                 name: 'time'

            },{

                fieldLabel: ' 纯字母 ',

                name: 'char',

                vtype:'alpha'

            }]

        }

Numberfield 顾名思义就是只能输入数字的输入控件。在该例子,没做最大值、最小值任何限制,如果要设置最大值和最小值,分别设置 maxValue minValue 两个属性就行了。如果要设置数字输入长度,例如身份证号码,可以设置 maxLength minLength 两个属性。可以通过设置 maxText minText maxLengthText minLengthText 设置各自的验证出错信息。可通过 allowDecimals 属性设置是否只允许输入整型值,默认值是 true ,允许输入浮点数。设置 allowNegative 设置是否只允许输入正数,默认值是 true ,允许输入正负数。通过 decimalPrecision 属性可设置小数点后的位数,默认值是 2 位。

timefield 是新增加的时间输入控件,起弥补日期输入控件不能输入时间的作用。它的定义也很简单,设置类型为 timefield 就行了。 timefield 默认时间格式是 12 小时制的,我们可通过修改 format 属性来修改其数据格式。通过设置 increment 属性可设置下拉选择值得时间区间,默认值是 15 分钟的。还可以和数字输入控件一样设置最大值和最小值。下拉的设置和 combobox 是一样的。

在目前的版本中, timefield 类还没有汉化,所以我们要在本地文件中加入 timefield 的汉化定义:

if(Ext .form.TimeField){

   Ext.apply(Ext.form.TimeField.prototype, {

     format:'G:i:s',

     minText : " 该输入项的时间必须大于或等于: {0}",

     maxText : " 该输入项的时间必须小于或等于: {0}",

     invalidText : "{0} 不是有效的时间 ",

       });

}

在这里,我默认定义了时间格式是 24 小时制的,小时为个位数是不加前缀 0

最后一个加入的是测试纯字母输入的,和 email 等是一样的,我就不介绍了。

在最后一个 tab 页中加入了一个 textarea 输入

{

            title:' 文本区域 ',

            layout:'fit',

            items: {

                xtype:'textarea',

                id:'area',

                fieldLabel:''

            }

        }

最后一步就是为 form 添加按钮了,在 formpanel buttons 属性中我们加入了一个保存按钮和取消按钮:

buttons: [{

        text: ' 保存 ',

        handler:function(){

               if(simpleForm.form.isValid()){

               this.disabled=true;

                      simpleForm.form.doAction('submit',{

                                                 url:'test.asp',

                                                 method:'post',

                                                 params:'',

                                                 success:function(form,action){

                                                        Ext.Msg.alert(' 操作 ',action.result.data);                                                        this.disabled=false;

                                                 },

                                       failure:function(){

                                      Ext.Msg.alert(' 操作 ',' 保存失败! ');

                                                        this.disabled=false;

                                                 }

                      });

               }

        }           

    },{

        text: ' 取消 ',

        handler:function(){simpleForm.form.reset();}

    }]

formpanel 类中, form 属性指向的是 formpanle 里的 basicform 对象 ,我们可通过 formpanle.form 来使用该 basicform 对象。在被例子,我们已经将 formpanel 对象赋值给了 simpleForm 这个变量,所以我们可以通过 simpleForm.form 访问面板里的 basicform 对象。

buttons 里定义的按钮默认是 Ext.Button ,所以按钮的属性定义可以查看 Ext.Button API 。在这里两个按钮都没用到其它属性,只是设置了显示文本( text )和单击事件。

保存按钮要做的就是先做 basicform 的客户端验证( simpleForm.form.isValid() ),验证通过了则设置该按钮状态为 disable ,防止 2 次提交。然后调用 simpleForm.form.doAction 方法 提交数据。 doAction 方法的第一个参数“ submit ”的意思是表示执行的是提交操作,提交的后台页面是 test.asp url:'test.asp' ),提交方式是 post method:'post' ),没有其它提交参数( params:'' ),提交成功后执行 success 定义的函数,本例只是显示一个保存成功信息。后台返回的数据格式是需要我们注意的,一定要json格式,而且必须包含“ success:true”,不然不会执行 success定义的函数。 success 定义的函数返回两个参数,第一是 form 本身,第二个是 ajax 返回的响应结果,在 action.result 这个 json 数组了保存了后台返回的数据。例如本例后台返回的 json 结构是“ {success:true,data:~~~} ”,其中 data 部分我将提交的数据将字段名和数据组合成一个字符串。在 success 函数中,我通过“ Ext.Msg.alert(' 操作 ',action.result.data); ”将 data 数据显示出来。我们还定义 failure 函数,就是网络通讯存在问题的时候将显示错误信息。

取消按钮就是简单的 reset 一下 form 的控件。

如果想 form 按以前的老办法提交,可以在 formpanel 的定义中加入一下设置:

 

onSubmit: Ext.emptyFn,

       
submit: function() {


        
this.getEl().dom.submit();


}

第一个设置的目的是取消 formpanel 的默认提交函数。第二就是设置新的提交方式为旧方式提交。

至此,我们已经简单的学习 一次 2.0 版中的 form 控件,希望大家能从中获得收益。如果有什么疑问和建议,请联系我。多谢!

分享到:
评论

相关推荐

    Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别

    在EXTJS框架中,`Ext.FormPanel`和`Ext.Ajax.request`提供了两种不同的异步提交方法,它们各自有其特点和适用场景。下面我们将详细探讨这两种方式的区别。 1. **Ext.FormPanel的异步提交** `Ext.FormPanel` 是...

    .archExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇).doc

    首先,Ext.FormPanel是ExtJS中用于创建表单的主要组件,它允许我们构建复杂的表单布局并处理用户输入的数据。 1. **Checkbox简单示例** Checkbox在ExtJS中用于创建复选框,可以用来让用户选择多个选项。在示例中,...

    EXT.form组件

    1. `form`:`Ext.FormPanel`是EXT JS中的表单面板,它是一个容器,可以容纳各种表单字段和其他组件。表单面板允许你定义布局、提交行为以及处理表单数据的方法。 2. `checkbox`:`Ext.form.Checkbox`是用于创建复选...

    Ext 添加功能form表单实例

    在这个例子中,通过`new Ext.FormPanel`来创建了一个表单面板,并设置了一些关键属性: - `frame`: 设置为`true`,表示表单周围有一个边框。 - `width` 和 `height`: 分别设置了表单的宽度和高度。 - `layout`: ...

    ext几个实例

    【EXTJS】Ext.AJAX与FormPanel在登录案例中的应用 EXTJS是一个强大的JavaScript库,主要用于构建富客户端Web应用程序。在EXTJS中,Ext.AJAX和Ext.FormPanel是两个核心组件,它们分别用于异步与服务器进行数据交互和...

    Ext组件描述,各个组件含义

    **2.16 Form Panel (Ext.FormPanel)** - **xtype**: `form` - **功能描述**:Form Panel 是一个包含表单字段的面板。 - **主要用途**:用于创建和管理表单,支持数据验证和提交。 **2.17 Checkbox (Ext.form....

    ExtJs中处理后台传过来的date对象显示到页面上

    4. **创建GridPanel**: 最后,创建GridPanel并附加到ColumnModel和Store: ```javascript var grid = Ext.create('Ext.grid.Panel', { store: store, cm: cm, renderTo: Ext.getBody() }); ``` 通过以上...

    Extjs4 下拉树 TreeCombo

    var formPanel = Ext.create('Ext.container.Container', { layout: 'fit', items: [treeCombo] }); Ext.create('Ext.container.Viewport', { layout: 'fit', items: [formPanel] }); } }); ``` 在给定的...

    ExtJs_xtype一览

    - `form`:`Ext.FormPanel` 或 `Ext.form.FormPanel`,用于创建表单的容器。 - `checkbox`:`Ext.form.Checkbox`,多选框组件。 - `combo`:`Ext.form.ComboBox`,下拉选择框。 - `datefield`:`Ext.form....

    Ext js Xtype

    - **Form Components**: 用于构建表单的组件,如`Ext.FormPanel`,`Ext.form.Checkbox`,`Ext.form.TextField`等。 - **Chart Components**: 提供了各种图表组件,如`Ext.chart.Chart`,`Ext.chart.BarChart`,`Ext....

    Extjs帮助文档.pdf

    接下来将详细介绍文档中提到的几个核心概念,包括`Ext.MessageBox`、`Ext.Panel`、`Ext.Window`、`Ext.FormPanel`、`Ext.TabPanel`、`Ext.XTemplate`和`Ext.TreePanel`以及如何在Extjs中实现主题(换肤)功能。...

    ext学习资料ext学习资料

    4. **在项目中使用Ext Js** 引入Ext Js库需要将`resources`目录及其内容复制到项目中,并确保按顺序加载`ext-base.js`、`ext-all.js`和`ext-lang-zh_CN.js`。在HTML文件中,这些链接应该像下面这样添加: ```html...

    ext判断该用户是否在数据库中存在

    4. 在客户端,使用 validator 函数来处理服务器端返回的结果。 5. 如果用户名已经存在,则显示错误信息,否则允许用户添加或注册该用户名。 Ext.js 中的AJAX请求 在 Ext.js 中,使用 Ext.Ajax.request 方法可以...

    extjs form textfield的隐藏方法

    this.formpanel = new Ext.FormPanel({ items: [{ fieldLabel: ‘代码’, name: ‘FCode’, anchor:’100%’, id: ‘fid’ },{ fieldLabel: ‘名称’, name: ‘FName’, anchor:’100%’ // anchor width by ...

    ext 的ppt ext 的ppt ext 的pptext 的pptext 的ppt

    var form = new Ext.form.FormPanel({ title: ' 用户登录 ', frame: true, items: [textfield], renderTo: document.body }); ``` 方法二是直接在FormPanel配置中定义items,像这样: ```javascript var form ...

    Ext 3.x 文件批量上传

    在Ext中,我们可以使用`Ext.form.FormPanel`来定义表单,并通过`Ext.form.FileField`(也称为`FileUploadField`)添加文件选择功能。此字段允许用户选择一个或多个文件,并触发上传操作。 `说明.txt`文件可能包含了...

    struts+extjs实现UploadDialog

    为了创建一个UploadDialog,你可以使用`Ext.window.Window`或`Ext.container.Viewport`来创建一个弹出窗口,里面包含一个`Ext.form.FormPanel`,并在其中添加`FileField`。当用户选择文件并点击提交按钮时,ExtJS会...

Global site tag (gtag.js) - Google Analytics