Ext的form功能是无穷的。按键监听,校验,错误提示和值约束只需要做下简单配置就可以了。根据需要扩展form选项也是很容易的。你要先熟悉一些主要的form控件。
1. Ext.form.FormPanel:多个的field可以放在一个panel里,就像html里需要一个form标签一样。
2. Ext.form.Field:form里的主要用作创建和交互的控件,就像是html里的input标签。
我们先来建一个有多种输入类型的form ,还包括了日期选择控件,校验,错误提示,而且是ajax异步提交的。
这个例子,我们的输入框是用配置的,而不是实例化后的控件。这样编写简单而且运行速度也快。一个标准的页面,ext的包也都要导进来,我们的方法也要写在onReady函数里。
<script>
Ext.onReady(function(){//copyright guoyiqi
var movie_form = new Ext.FormPanel({
url: 'movie_forms_ubmit.jsp',
renderTo: document.body,
frame: true,
title: '电影信息',
width: 280,
items: [{
xtype: 'textfield',
fieldLabel: '电影名',
name: 'title'
},{
xtype: 'textfield',
fieldLabel: '导演',
name: 'director'
},{
xtype: 'datefield',
fieldLabel: '上映日期',
name: 'released',
width:120
}]
});
});
</script>
在浏览器预览,可以看到以下界面
FormPanel跟html的form非常像,都是用来包含表单项的。在FormPanel里有个url的配置属性,当表单提交时,它就知道要把数据发送到哪里了。同时它也有个renderTo的配置属性,这样就能把表单显示到页面的相应位置。Items的配置属性非常重要,它包含了所有的表单项。Items配置的是个数组类型的表单项,每个表单项用一个xtype属性来定义该表单项的类型:文本,日期或数字。甚至可以是表格或其他的Ext控件。
表单项的类型有以下一些:
Textfield
Timefield
Numberfield
Datefield
Combo
Textarea
先来看例子中的第一个表单项
{
xtype: 'textfield',//配置表单项类型
fieldLabel: '电影名',//显示在左边的文本标签,当然也可以设置成在右边或上边
name: 'title'//和html一样,发送到服务器端的变量名
}
Ext中的表单项和html中的表单项基本上是一致的,因为Ext 是用于Web的。
校验
当用户操作不当时,我们应该要给出错误提示。让我们在上面的例子里加入校验吧。最常见的校验是检查用户是否输入了值。我们就用在电影名这个表单项上吧。把它设成必填项。
{
xtype: 'textfield',
fieldLabel: '电影名',
name: 'title',
allowBlank: false
}
加上个allowBlank: false,这是很容易的。默认情况下为true.
有些表单项的校验可能会很特殊,如日期,下面的代码限制了只能填入星期六和星期日。
{
xtype: 'datefield',
fieldLabel: '上映日期',
name: 'released',
width:120,
disabledDays: [1,2,3,4,5]
}
要记得星期是从0开始代表星期日,6结束代表星期六。
当然我们还可以设置数字校验,小数位数等,相关配置可以查看API.
更复杂的校验是vtype。它可以校验限制用户的输入,并且提示错误信息。你可以用它来校验你能想到的任何场景,因为它是用正则表达式来设置的。
已经有一些内置的vtypes可以用了:
Email
url
alpha
alphanum
这些内置的vtypes简单易用,并可以用它们来创建自己的vtype。
我们在导演这个表单项加入vtype限制,只能输入字母。
{
xtype: 'textfield',
fieldLabel: '导演',
name: 'director',
vtype: 'alpha'
}
这个例子我们可以看到内建的vtype很基础,表单项的导演就只能输入字母,输入中文就用红色波浪形给出提示了。
错误信息提示
默认情况下,表单项验证不通过时是以红色波浪形给出提示,和微软的word对语法的错误校验提示一样。我们还可以在ext 中设置其它的错误提示方式。
一种比较好的方式是除了给出红色波浪形,当鼠标移到表单项上时,弹出提示框信息。我们只需要在表单创建之前加入一条语句就 可以了。
Ext.onReady(function(){
Ext.QuickTips.init();
// our form here
});
创建自己的vtype
如果你也像我一样看到正则表达式就头大,我总是先找一些类似的然后做些修改,而不是从头写起。http://guoyiqi.iteye.com
要创建我们自己的vtype,就要在vtype的定义中添加。每个定义包括值,掩码,错误信息和测试用的函数。
我们对导演名进行校验,只能包含字符和空格,第一个字母大写。
<script>
Ext.onReady(function(){
Ext.QuickTips.init();
Ext.form.VTypes['nameVal'] = /^[A-Z][A-Za-z\-]+[A-Z][A-Za-z\-]+$/;//校验的值
Ext.form.VTypes['nameMask'] = /[A-Za-z\- ]/;//限制输入
Ext.form.VTypes['nameText'] = '名字格式有误';//错误信息
Ext.form.VTypes['name'] = function(v){//测试函数
return Ext.form.VTypes['nameVal'].test(v);
}
var movie_form = new Ext.FormPanel({
url: 'movie_forms_ubmit.jsp',
renderTo: document.body,
frame: true,
title: '电影信息',
width: 280,
items: [{
xtype: 'textfield',
fieldLabel: '电影名',
name: 'title',
allowBlank: false
},{
xtype: 'textfield',
fieldLabel: '导演',
name: 'director',
vtype: 'name'
},{
xtype: 'datefield',
fieldLabel: '上映日期',
name: 'released',
width:120,
disabledDays: [1,2,3,4,5]
}]
});
});
</script>
掩码可以限制输入,如只允许数字或是字母。因为用正则表达式做设置,所以可以过滤掉任何按键。举个例子copy right guoyiqi 2009
maskRe: /[A-Z]/
可以输入任意长度字母串。
也可以用vtype来做限制。如果格式变来变去,就应该做成容易修改的代码。如果你的boss过来跟你说,上次我们的数字保留的是10位,现在我们可不可以改成8位。这时我们只需要改下vtype 就可以了。
http://guoyiqi.iteye.com
Radio buttons and check boxes
单选和多选框
单选框和多选框真是很难用的恶魔。我只在毫无选择的情况下才会使用它们。
我们现在表单里加入单选框。
{
xtype: 'radio',
fieldLabel: 'Filmed In',
name: 'filmed_in',
boxLabel: 'Color'
},{
xtype: 'radio',
hideLabel: false,
labelSeparator: '',
name: 'filmed_in',
boxLabel: 'Black & White'
}
他们和html的单选框很像,给了相同的名字就可以设成一组。我们设置第一个radio的标签,其余的没有设置。
默认情况下标签以:隔开,如图
如果隐藏了标签,
都影响了视觉效果,所以设置了hideLabel: false,
labelSeparator: '',将:替换成空。
有时我们要用到多选框来设置布尔类型-开或关的两个状态值。
{
xtype: 'checkbox',
fieldLabel: '是否好电影',
name: 'good_movie'
}
在firefox浏览器的效果出不来,如图http://guoyiqi.iteye.com
在html的表单中,组合框或叫选择框或叫下拉框是很常用的。Ext的组合框是很实用的。
我们先来试一下组合框的数据取自本地。我们需要建一个data store。Data store有很多种类,这里用一个简单的。font-size:
分享到:
相关推荐
这本书深入浅出地介绍了Ext JS的核心概念、组件和功能,旨在帮助开发者掌握这一强大的JavaScript库,从而构建高效、用户友好的Web应用程序。 Ext JS是一个用于构建富互联网应用程序(RIA)的开源JavaScript库,它...
总之,Ext JS是一个功能强大的JavaScript框架,提供了丰富的用户界面组件和API,能够帮助开发者快速构建具有专业外观和复杂交互功能的Web应用程序。通过学习Ext JS,开发者可以掌握构建现代、动态、跨平台Web应用所...
"学习EXT JS中文版之在对话框中添加图标和按钮事件"这一主题深入探讨了如何为EXT JS的对话框(Modal Dialog)增添视觉吸引力和功能性,通过添加图标和响应式按钮事件来提升用户体验。 EXT JS中的对话框通常用于显示...
Learning Ext JS 4 by Crysfel Villa and Armando Gonzalez (Oct 8, 2012) $49.99 Paperback Order in the next 13 hours and get it by Tuesday, Mar 19. More Buying Choices - Paperback $46.48 new (17 ...
### 关于《Learning_Ext_JS.pdf》中文文档的知识点总结 #### 一、Ext JS简介与功能概述 根据文档标题“Learning_Ext_JS.pdf使用中文文档”,我们可以推断出本书主要介绍了Ext JS这一Web开发框架的相关知识。Ext JS...
Ext JS是一个强大的JavaScript库,专为构建富客户端Web应用而设计。它提供了丰富的组件模型,包括各种对话框(Dialogs),这些对话框可以用于显示通知、确认信息、输入数据等。 在Ext JS中,对话框通常称为`Window`...
首先,标题“Learning Ext JS 4”指明了这本教程的核心内容,即学习Ext JS框架的第四个版本。Ext JS是一个基于JavaScript的框架,用于开发富互联网应用程序(RIA)。它提供了一系列丰富的界面组件,使得开发者能够...
learning ext js learning ext jslearning ext js learning ext js
本书《Learning Ext JS》由Shea Frederick、Colin Ramsay 和 Steve 'Cutter' Blades 共同编写,旨在为读者提供一个系统性的学习指南,帮助开发者掌握使用Ext JS开发RIA(Rich Internet Application)的技术。...
Ext JS是一种基于JavaScript的库,用于构建交互式和高性能的Web应用程序。它提供了一系列丰富的UI组件,如表格、网格、树、图表等,以及强大的数据管理功能,使得开发者能够快速地创建复杂的用户界面。Ext JS支持...
### 关于《Learning Ext JS》 #### 书籍概述 《Learning Ext JS》是一本于2008年出版的专业书籍,旨在帮助读者学习如何使用Ext JS框架构建动态、桌面风格的用户界面,适用于数据驱动的Web应用程序。本书由Shea ...
Ext JS是一个用于创建交互式用户界面的JavaScript库,它提供了丰富的组件和工具,使得开发者能够轻松地开发出高性能的Web应用。 ### 构建动态用户界面 在现代Web开发中,用户界面的体验对于吸引和保留用户至关重要...
《Learning ExtJS, Fourth Edition (Ext JS 5+)》是关于Ext JS框架的一本经典教程,该书针对Ext JS的5.x版本进行了全面升级。Ext JS是一个成熟的JavaScript框架,用于开发具有丰富交互性的Web应用程序。它最初由Jack...
- 对于初学者来说,建议先阅读《Learning Ext JS》这本书作为入门指南,然后再深入学习《Ext JS 3.0 Cookbook》中的进阶内容。 - 结合实际项目进行练习是非常重要的,可以尝试着根据书中的示例构建自己的小项目,...
Ext.JS是一种功能强大的JavaScript库,用于简化Web前端开发过程,允许开发者快速构建复杂的用户界面组件,如表格、树、菜单、工具栏等,同时提供丰富的主题和样式选项。 ### 构建动态桌面式用户界面 在《学习Ext....
"Learning TypeScript 中文完整版.pdf" 这本书详细介绍了 TypeScript 的各个方面,帮助学习者全面掌握这一强大的语言工具。 1. **类型系统**:TypeScript 引入了静态类型,允许开发者在编写代码时就声明变量、函数...
Ext JS是一种强大的JavaScript框架,主要用于构建富互联网应用程序(RIA,Rich Internet Applications)。它提供了一套完整的组件模型,使得开发者能够创建交互性强、功能丰富的Web应用。这个“Ext JS开发资料大汇集...
《Learning Python中文版》是一本旨在帮助读者入门Python编程语言的书籍。这本书详细介绍了Python的基础知识,适合初学者和希望提高编程技能的读者。Python是一种自由的开放源码的解释性语言,它设计的初衰就是追求...
Learning ELK Stack中文版