对于从事Web开发的程序员来讲,接触最多的就是表单的操做。传统的HTML表单给人一种功能单一风格朴素的印象。这个问题在ExtJs的表单上有了很大程度的改善,ExtJs对于经常使用表单功能给出了优秀的实现,不但美观并且稳定。接下来会对ExtJs表单的主要功能及组件进行详细的介绍。html
表单在Web应用中处于很是重要的地位,咱们时刻都在使用表单收集用户信息与用户交互,并将收集到的有用信息提交到后台服务端,表单是客户端与服务端之间通讯的主要桥梁。
程序员
ExtJs表单不但能够实现HTML标准表单的所有功能,还提供了大量的扩展特性:
数组
(1)表单的异步提交
浏览器
(2)可配置的表单数据验证
异步
(3)可配置的表单错误信息提示
编辑器
(4)对特殊数据(数组、日期、时间等)输入组件的支持
ide
Ext.form.Basic是基本的表单组件,提供了字段管理、数据验证、表单提交、数据加载等功能,它能够做用与Ext.container.Container容器,但推荐使用Ext.form.Panel做为表单容器。Ext.form.Panel会自动关联到Ext.form.Basic示例,方便进行字段的配置。
布局
ExtJs的表单面板组件Ext.form.Panel,本质是一个标准的Ext.panel.Panel(面板),是表单项的容器,它内置并自动建立了Ext.form.Basic基本表单组件,用来管理表单项(Ext.form.Field),Ext.form.Panel支持Ext.form.Basic的全部配置内容。
测试
Ext.form.Panel默认使用anchor布局,而且能够方便地替换为其余任何标准布局。
spa
Ext.form.Panel与HTML原始表单布局表现形式不一样,对表单的操做及处理也不相同,这些不一样主要表如今表单的提交方式、表单的验证和对表单组件的支持3个方面。
(1)表单提交方式
HTML原始表单(form)使用form.submit()的方式进行提交,这种提交方式是同步进行的,会致使浏览器页面的跳转,打断用户操做,下降用户体验。而Ext.form.Panel(表单面板组件)采用Ajax方式进行异步表单提交,不会致使浏览器页面的跳转,不会打断用户的操做,有利于改善用户体验。
(2)对表单验证的支持
HTML原始表单并不支持表单组件的验证功能,在须要进行验证的场合程序员须要编写相应的验证代码,并在表单提交前进行调用以保证提交数据的正确性。而Ext.form.Panel已经支持了常见的表单验证功能,只须要在组件上进行必要的配置就能够实现对该组件输入数据的验证,而且这个验证是不须要程序员手工调用的,在表单提交以前会自动调用验证功能,并对出现错误的输入给出相应的提示。
(3)对表单组件的支持
HTML原始表单支持的表单组件和Ext.form.Panel支持的表单组件很是不一样,Ext.form.Panel支持的表单组件所有是通过ExtJs封装以后的组件对象,具备更多的高级功能。
如下列出Ext.form.FormPanel支持的主要表单组件
ExtJs表单组件 | 说明 | xtype类型 |
Ext.form.field.Checkbox | 复选框 |
checkboxfield |
Ext.form.CheckboxGroup | 复选框组 | checkboxgroup |
Ext.form.field.ComboBox | 下拉列表框 | combo |
Ext.form.field.Date | 日期选择框 | datefield |
Ext.form.field.Display |
文本展现组件 | displayfield |
Ext.form.FieldContainer | 字段容器 | fieldcontainer |
Ext.form.FieldSet | 字段集 | fieldset |
Ext.form.field.Hidden | 隐藏域 | hiddenfield |
Ext.form.field.HtmlEditor | HTML文本编辑器 | htmleditor |
Ext.form.Label | 标签字段 | label |
Ext.form.field.Number | 数字输入框 |
numberfield |
Ext.form.field.Radio | 单选框 | radio |
Ext.form.RadioGroup | 单选框组 | radiogroup |
Ext.form.field.Spinner | 微调组件 | spinnerfield |
Ext.form.field.TextArea | 多行文本框 | textareafield |
Ext.form.field.Text | 单行文本框 | textfield |
Ext.form.field.Time | 时间选择框 | timefield |
Ext.form.field.Trigger | 触发按钮文本框 | triggerfield |
Ext.form.field.File | 文本上传字段 | filefield |
如下列出Ext.form.Panel的重要配置项及经常使用方法
配置项 |
类型 | 说明 |
buttons | Array | 一个按钮(Ext.button.Button)配置对象的数组,按钮将被添加到表单页脚当中 |
layout | String | 表单布局,默认为anchor |
minButtonWidth | Number |
表单按钮的最小宽度,默认为75像素 |
pollForChanges | Boolean | 是否循环检查表单值得变化 |
pollInterval | Number | 循环检查表单值的时间间隔,默认为500毫秒 |
items | Mixed | 一个子元素或子元素的数组 |
title | String | 表单标题 |
下面咱们将建立一个form表单容器
Ext.onReady(function() { var form = Ext.create('Ext.form.Panel', { renderTo: 'form', title: '表单测试', height: 300, width: 380, defaults: { labelSeparator: ':', labelAlign: 'right', allowBlank: false, blankText: '不容许为空', // msgTarget: 'qtip' //显示一个浮动的提示信息 // msgTarget: 'title' //显示一个浏览器原始的浮动提示信息 // msgTarget: 'side' //在字段下方显示一个提示信息 msgTarget: 'under' //在字段的右边显示一个提示信息 // msgTarget: 'errorMsg' //在指定id的元素内显示提示信息 }, items: [ {xtype: 'textfield', fieldLabel: '姓名'}, {xtype: 'numberfield', fieldLabel: '年龄', minValue: 1} ], buttons: [{text:'Submit'}, {text:'Reset'}] }); });
运行结果如图: