ExtJs之表单(form)

--Form和Form Basic

Extjs Form和Form Basic是两个东西,Form提供界面的展示,而Form Basic则提供数据的处理、验证等功能。每一个Form Panel在创建的时候,都会绑定一个Form Basic,我们可以通过方法getForm来获取:

form.getForm()

在API方面,Form的config中没有显示Form Basic的config,但是Form Basic的config在Form的config中完全有效,也就是说,当我们使用Extjs Form的时候,不仅仅要查看Form的API文档,还要浏览相关的Form Basic的文档。

创建Extjs Form控件

var form = Ext.create("Ext.form.Panel", {

width: 500,

height: 300,

margin: 20,

title: "Form",

renderTo: Ext.getBody(),

collapsible: true,  //可折叠

autoScroll: true,   //自动创建滚动条

defaultType: ‘textfield‘,

defaults: {

anchor: ‘100%‘,

},

fieldDefaults: {

labelWidth: 80,

labelAlign: "left",

flex: 1,

margin: 5

},

items: [

{

xtype: "container",

layout: "hbox",

items: [

{ xtype: "textfield", name: "name", fieldLabel: "姓名", allowBlank: false },

{ xtype: "numberfield", name: "age", fieldLabel: "年龄", decimalPrecision: 0, vtype: "age" }

]

},

{

xtype: "container",

layout: "hbox",

items: [

{ xtype: "textfield", name: "phone", fieldLabel: "电话", allowBlank: false, emptyText: "电话或手机号码" },

{ xtype: "textfield", name: "phone", fieldLabel: "邮箱", allowBlank: false, emptyText: "Email地址", vtype: "email" }

]

},

{

xtype: "textareafield",

name: "remark",

fieldLabel: "备注",

height: 50

}

],

buttons: [

{ xtype: "button", text: "保存" }

]

});

--Extjs Form布局

在Extjs Form中,默认的布局方式是layout: ‘anchor‘

anchor默认每行只显示一个控件,如果我们要在一行中显示多个,需要将这些控件放在一个container中,并设置container的layout为hbox。

--Extjs Form加载数据

Form可以加载Model数据,也可以加载Json数据,这样我们可以方便的将json或者record数据显示在Extjs Form控件中。

加载Record数据

Extjs Form通过方法loadRecord加载record,代码如下:

var userRecord = Ext.create("MyApp.model.User", {

name: "Tom",

age: 25,

phone: "123456"

});

form.loadRecord(userRecord);

加载Json数据

Extjs Form可以通过调用formbasic的setValues方法来加载json数据,代码如下:

var data = {

name: "Tom",

age: 25,

phone: "123456"

};

form.getForm().setValues(data);

--Extjs Form获取与更新数据

通过上面的方法,我们可以为Form加载record或json数据。当我们完成编辑之后,还需要获取编辑后的数据,或者将编辑后的数据更新到对应的record中,Extjs Form提供了相应的方法来完成这些操作。

如果Extjs Form加载的是record:

form.updateRecord();

如果Extjs Form加载的是json数据:

form.getForm().getValues()

Extjs Form异步加载与提交

Extjs Form除了可以加载页面中已存在的数据外,还可以通过Ajax的方式异步加载与提交数据。这种方法不太常用。

异步加载

form.getForm().load({

url: "form-data.ashx"

});

服务器返回的数据格式如下:

{

success:true,

data:{

name: "Tom",

age: 25,

phone: "123456"

}

}

异步提交

form.submit({

url: "form-submit.ashx",

success: function (form, action) {

Ext.Msg.alert(‘Success‘, action.result.msg);

}

});

submit方法提交的数据为Form中的所有value,可以在服务器端获取到。

--Extjs Form验证

在所有开发语言中,客户端验证是必不可少的。Extjs Form也提供了客户端验证机制,我们可以通过vtype来实现客户端验证。接下来我们详细的了解一下Extjs的客户端验证。

必填项,就是不能为空(allowBlank)

不为空

{

xtype: "textfield",

name: "UserName",

fieldLabel: "用户名",

allowBlank: false,

flex: 1

}

长度限制

{

xtype: "textfield",

name: "UserName",

fieldLabel: "用户名",

allowBlank: false,

maxLength: 10,

minLength: 3,

flex: 1

}

邮箱

{

xtype: "textfield",

name: "Email",

fieldLabel: "Email",

vtype: "email",

flex: 1

}

自定义xtype

//验证ip地址

Ext.apply(Ext.form.field.VTypes, {

IPAddress: function (v) {

return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);

},

IPAddressText: ‘只能输入ip地址‘,

IPAddressMask: /[\d\.]/i

});

{

xtype: "textfield",

name: "ip",

fieldLabel: "IP地址",

vtype: "IPAddress"

}

补充--Ext之DOM

Ext.Element(几乎对DOM的一切进行了彻底的封装)

1.Ext.get(Ext.Element.get)  使用了缓存机制来提升获取DOM节点的效率  返回的是Ext.Element()

首先去缓存找  如果缓存里有  直接返回即可;  如果缓存里没有  那再去页面上查找

如果页面没有  返回null   如果页面里有  把当前内容加入到缓存里

var d1 = Ext.get(‘d1‘);

alert(d1.dom.innerHTML);

2.Ext.fly(Ext.Element.fly)  使用了经典的享元模式 从而节约内存  更加低碳化

返回的是Fly对象   可以理解为 Ext.Element对象

var d2 = Ext.get(‘d2‘);

var d3 = Ext.get(‘d3‘);//由于使用了享元模式 只适合一次操作  从而节省内存

d2.dom.innerHTML = ‘AAA‘;

d3.dom.innerHTML = ‘BBB‘;

3.Ext.getDom()  直接返回HTMLElement元素

Ext.DomHelper(他是一个强大的操作UI界面的工具类)

Ext..DomQuery(用来进行DOM节点的查询)

时间: 2024-08-01 06:29:55

ExtJs之表单(form)的相关文章

【ExtJs】ExtJs的表单插件与表单布局、提交与验证

利用ExtJs的Anchor可以为ExtJs自带的表单Form各个组件进行布局,当然,使用<[ExtJs]带日期组件的文本输入框.容器与Ext.Msg.alert告警框告警两次>(点击打开链接)中的vbox也是可以的.其实ExtJs的表单插件与表单布局并不是关键,ExtJs的表单验证还好,就几行语句就能够完成.关键是ExtJs的表单提交必须通过Ajax方式,而在后台必须传回一个Json完成表单的提交,可能有点复杂,下面就以php作为ExtJs的后台处理来说明问题ExtJs的表单.aspx,js

表单 - Form - EasyUI提供的表单异步提交

方案一 被提交的表单 <form id="loginForm" method="post"> <table align="center"> <tr> <th align="right">用户名</th> <td> <input type="text" name="username"/> </td&g

HTML表单(Form)

HTML表单(Form)是HTML的一个重要部分,主要用于采集和提交用户输入的信息. 举个简单的例子,一个让用户输入姓名的HTML表单(Form).示例代码如下: <form action="http://www.admin5.com/html/asdocs/html_tutorials/yourname.asp" method="get"> 请输入你的姓名: <input type="text" name="your

asp.net MVC中控制器获取表单form提交的数据之实体类数据

第一次写记录文章,难免有不足之处:欢迎指出. 1.新建一个mvc项目如: 2.新建一个Test.cs 注意get,set方法不能简写 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System; using System.Collections.Generic; using System.Linq; usi

关于表单form元素中onsubmit事件处理机制的认识

博主目前处于Js学习的初期,遇到了很多问题,比如今天的关于表单form元素中onsubmit事件问题,根据教程所述,onsubmit事件是在表单提交的时候触发的,但是我看到教程上的onsubmit事件是这么写的 :onsubmit="return validateForm();",首先validateForm()已经有返回值了,为什么在这里还要加一个return??这让我百思不得其解,直到看到一篇博文才恍然大悟,受益匪浅,以下是这篇博文的出处:http://blog.163.com/h

(三)关于kendo IU表单form各类控件的数据绑定

=====================input textarea============================= <div id="view"> <input data-bind="value: inputValue" /> <textarea data-bind="value: textareaValue"></textarea> </div> <script&g

HTML的表单form以及form内部标签

本系列原理图均由Portel DXP 2004画成. 截图: 文件下载: CTM1050.7z HTML的表单form以及form内部标签,码迷,mamicode.com

3、网页制作Dreamweaver(表单form)

表单form (虚线不显示) 1.写法: <form id="form1" name="form1" method="post" action=""> </form> 1.  解释 name.id自定义,用于寻找此块内容 3.内容 (1)文本框:可以设置width,height  <label for="denglu">姓名</label>          

html_表单form中的input类型大集合

学到后面发现前面的内容都不是很巩固了. 知道自己的不足之后,最近在复习一些学过的知识. 做了一个表单form的input的属性type的大部分功能,当然还有没有涉及到的,比如range,time,month,number等等等等 贴上代码 <div class="content"> <h2>商品信息</h2> <form method="post" class="goods_form"> <d