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节点的查询)
ExtJs之表单(form)的更多相关文章
- HTML ------ 关于表单 Form
Form(表单)主要用于采集和提交用户输入的信息,是页面与WEB服务器交互过程中 最重要的信息来源. 掌握表单(Form)有以下几个要点: 重要form属性 form常用控件 form提交方式 § 重 ...
- Bootstrap~表单Form
回到目录 在进行自己的后台改版时,大体布局都使用了bootstrap,剩下的表单部分没理由不去使用它,对于表单的美化和布局,bootstrap做的也是很不错的,有大气的边框,多功能的按钮及宏观的表单布 ...
- 表单 - Form - EasyUI提供的表单异步提交
方案一 被提交的表单 <form id="loginForm" method="post"> <table align="cente ...
- 跟服务器交互的Web表单(form)
使用HTML来构建可以跟服务器交互的Web表单(form),通过给你的form元素添加一个action属性来达到此目的. action属性的值指定了表单提交到服务器的地址. 例如: <form ...
- 3、网页制作Dreamweaver(表单form)
表单form (虚线不显示) 1.写法: <form id="form1" name="form1" method="post" ac ...
- DHTMLX 前端框架 建立你的一个应用程序 教程(九)--绑定表单Form到表格Grrid中
绑定表单Form到表格Grrid中 现在我们需要选中一行表格数据的时候 数据能在表单中显示出来 我们可以使用DHTMLX 丰富的组件功能实现它. 绑定表单到表格 1.调用bind方法将表单绑定到网格, ...
- DHTMLX 前端框架 建立你的一个应用程序 教程(八)-- 添加表单Form
添加表单Form 我们下一步是在页面中添加一个表单,表格中的选中字段将会显示在表单中.提供一个提交按钮 可以对显示的数据进行修改提交. 添加表单到布局单元格中 1.在右侧布局中使用attachForm ...
- 微信小程序基础之表单Form的使用
表单Form的应用很广泛,我们可以利用form设计登录注册,也可以设计一种答题问卷的形式,今天主要讲一下form的使用 form表单,将组件内输入的"switch","i ...
- HTML(七)HTML 表单(form元素介绍,input元素的常用type类型,input元素的常用属性)
前言 表单是网页与用户的交互工具,由一个<form>元素作为容器构成,封装其他任何数量的表单控件,还有其他任何<body>元素里可用的标签 表单能够包含<input> ...
随机推荐
- 与http协作的web服务器、http首部(第五章、第六章)
第五章 与http协作的web服务器 1.用单台虚拟主机实现多个域名 通过域名访问主机,经过DNS解析成ip地址,反向代理,可以代理多台服务器,正向代理则相反,代理客户端 2.通信数据转化程序:代理. ...
- hdu 3689 Infinite monkey theorem
Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- Matlab 工具箱介绍
Toolbox工具箱 序号 工具箱 备注 数学.统计与优化 1 Symbolic Math Toolbox 符号数学工具箱 2 Partial Differential Euqation Toolbo ...
- 【C++ STL】Queue
1.定义 class queue<>实作为一个queue(也成为FIFO,先进先出).可以使用push()将任意数量的元素置入queue中,也可以使用pop()将元素以其插入顺序从容器中移 ...
- 【Codeforces542E】Playing on Graph [Bfs][Dfs]
Playing on Graph Time Limit: 20 Sec Memory Limit: 512 MB Description Input Output Sample Input 5 4 ...
- 代理设计模式iOS开发Demo(示例程序)源代码
iOS程序源代码下载链接:03-代理设计模式.zip28.3 KB // main.m // // main.m // 03-代理设计模式 // // Created by apple ...
- document.onclick在ios上不触发的解决方法与touchstart点击穿透处理
document.onclick = function (e) { var e = e ? e : window.event; var tar = e.srcElement || e.target; ...
- Python3 高阶函数
高阶函数 (满足其一就是:(1)一个函数名作为另一个函数的形参:(2)返回值包含函数名;不修改函数的调用方式) 1.一个函数名作为另一个函数的形参 输出结果: 2.返回值包含函数名;不修改函数的 输出 ...
- python基础===autopep8__python代码规范
关于PEP 8 PEP 8,Style Guide for Python Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性. 官网地址:http ...
- linux===给新手的 10 个有用 Linux 命令行技巧(转)
本文转自:http://www.codeceo.com/article/10-linux-useful-command.html?ref=myread 仅用作学习交流使用.如有侵权,立删 我记得我第一 ...