在实际的网页开发中,大部分时间都要涉及到Form表单的处理。在Ext
框架
中也提供了很多这方面的控件,而且还有一个专门的FormPanel布局,该布局默认为放在面板上面的所有控件都是换行放置,而在实际应用中为了美观,有些需要横排,特别是Radio控件,这个时候就需要我们重新定制这些控件的布局了,该例子中使用CSS
来实现这些功能,先贴出一张效果图。
实现上面效果的具体代码
如下:
-
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
-
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
-
<head>
-
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
/>
-
<title>Ext中FormPanel面板及Form控件横排测试(CSS)</title>
-
<link rel=
"stylesheet"
type=
"text/css"
media=
"all"
href=
"../ext/resources/css/ext-all.css"
/>
-
<style type=
"text/css"
media=
"all"
>
-
.allow-
float
{clear:none!important;}
-
.stop-
float
{clear:both!important;}
-
.sex-male {
float
:left;}
-
.sex-female {
float
:left;padding:0 0 0 20px;}
-
.age-field {
float
:left;padding:0 0 0 58px;*padding:0 0 0 50px!important;*padding:0 0 0 50px;}
-
</style>
-
</head>
-
<body>
-
<scrīpt type=
"text/javascrīpt"
src=
"../ext/adapter/ext/ext-base.js"
></scrīpt>
-
<scrīpt type=
"text/javascrīpt"
src=
"../ext/ext-all.js"
></scrīpt>
-
<scrīpt type=
"text/javascrīpt"
src=
"../ext/build/locale/ext-lang-zh_CN.js"
></scrīpt>
-
<scrīpt type=
"text/javascrīpt"
>Ext.BLANK_IMAGE_URL =
'../ext/resources/images/default/s.gif'
;</scrīpt>
-
<scrīpt type=
"text/javascrīpt"
>
-
Ext.onReady(
function
() {
-
-
var
fp =
new
Ext.form.FormPanel({
-
buttonAlign:
'center'
,
-
labelAlign:
'right'
,
-
labelWidth:40,
-
frame:
true
,
-
bodyStyle:
'padding:8px 0 0 0;'
,
-
items:[{
-
xtype:
'textfield'
,
-
fieldLabel:
'姓名'
,
-
name:
'n_username'
,
-
id:
'i_username'
,
-
width:320
-
},{
-
xtype:
'radio'
,
-
fieldLabel:
'性别'
,
-
boxLabel:
'男'
,
-
name:
'sex'
,
-
id:
'male'
,
-
itemCls:
'sex-male'
,
-
clearCls:
'allow-float'
,
-
checked:
true
-
},{
-
xtype:
'radio'
,
-
boxLabel:
'女'
,
-
name:
'sex'
,
-
id:
'female'
,
-
itemCls:
'sex-female'
,
-
clearCls:
'allow-float'
,
-
hideLabel:
true
-
},{
-
xtype:
'textfield'
,
-
fieldLabel:
'年龄'
,
-
name:
'n_age'
,
-
id:
'i_age'
,
-
itemCls:
'age-field'
,
-
width:133
-
},{
-
xtype:
'textfield'
,
-
fieldLabel:
'住址'
,
-
name:
'n_address'
,
-
id:
'i_address'
,
-
itemCls:
'stop-float'
,
-
width:320
-
}],
-
buttons:[{
-
text:
'确定'
,
-
handler:onOK
-
}, {
-
text:
'重置'
,
-
handler:
function
(){ fp.getForm().reset(); }
-
}],
-
keys:[{
-
key:Ext.EventObject.ENTER,
-
fn:onOK,
-
scope:
this
-
}]
-
});
-
-
-
function
onOK() {
-
var
strMsg;
-
strMsg =
'姓名:'
+ fp.getComponent(
'i_username'
).getValue() +
',性别:'
;
-
if
(fp.getComponent(
'male'
).checked) strMsg +=
'男'
;
-
if
(fp.getComponent(
'female'
).checked) strMsg +=
'女'
;
-
strMsg +=
',年龄:'
+ fp.getComponent(
'i_age'
).getValue();
-
strMsg +=
',住址:'
+ fp.getComponent(
'i_address'
).getValue();
-
alert(strMsg);
-
}
-
-
-
new
Ext.Window({
-
title:
'Ext中FormPanel面板及Form控件横排测试(CSS)'
,
-
width:400,
-
closable:
false
,
-
collapsible:
true
,
-
draggable:
false
,
-
resizable:
false
,
-
modal:
true
,
-
border:
false
,
-
items:[fp],
-
buttons:[]
-
}).show();
-
});
-
</scrīpt>
-
</body>
-
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ext中FormPanel面板及Form控件横排测试(CSS)</title>
<link rel="stylesheet" type="text/css" media="all" href="../ext/resources/css/ext-all.css" />
<style type="text/css" media="all">
.allow-float {clear:none!important;} /* 允许该元素浮动 */
.stop-float {clear:both!important;} /* 阻止该元素浮动 */
.sex-male {float:left;}
.sex-female {float:left;padding:0 0 0 20px;}
.age-field {float:left;padding:0 0 0 58px;*padding:0 0 0 50px!important;*padding:0 0 0 50px;}
</style>
</head>
<body>
<scrīpt type="text/javascrīpt" src="../ext/adapter/ext/ext-base.js"></scrīpt>
<scrīpt type="text/javascrīpt" src="../ext/ext-all.js"></scrīpt>
<scrīpt type="text/javascrīpt" src="../ext/build/locale/ext-lang-zh_CN.js"></scrīpt>
<scrīpt type="text/javascrīpt">Ext.BLANK_IMAGE_URL = '../ext/resources/images/default/s.gif';</scrīpt>
<scrīpt type="text/javascrīpt">
Ext.onReady(function() {
//创建Form面板
var fp = new Ext.form.FormPanel({
buttonAlign:'center',
labelAlign:'right',
labelWidth:40,
frame:true,
bodyStyle:'padding:8px 0 0 0;',
items:[{
xtype:'textfield',
fieldLabel:'姓名',
name:'n_username',
id:'i_username',
width:320
},{
xtype:'radio',
fieldLabel:'性别',
boxLabel:'男',
name:'sex',
id:'male',
itemCls:'sex-male', //向左边浮动,处理控件横排
clearCls:'allow-float', //允许两边浮动,在实际生成的HTML结构中有专门的DIV阻断浮动
checked:true
},{
xtype:'radio',
boxLabel:'女',
name:'sex',
id:'female',
itemCls:'sex-female', //向左浮动,处理控件横排
clearCls:'allow-float', //允许两边浮动
hideLabel:true //不显示前面"性别"的标签
},{
xtype:'textfield',
fieldLabel:'年龄',
name:'n_age',
id:'i_age',
itemCls:'age-field', //向左浮动,处理控件横排
width:133
},{
xtype:'textfield',
fieldLabel:'住址',
name:'n_address',
id:'i_address',
itemCls:'stop-float', //不允许浮动,结束控件横排
width:320
}],
buttons:[{
text:'确定',
handler:onOK //实际应用一般是处理fp.getForm.submit()事件
}, {
text:'重置',
handler:function(){ fp.getForm().reset(); }
}],
keys:[{ //处理键盘回车事件
key:Ext.EventObject.ENTER,
fn:onOK,
scope:this
}]
});
//确定按钮事件,这里只是简单获取各控件值,实际应用一般和后台脚本结合
function onOK() {
var strMsg;
strMsg = '姓名:' + fp.getComponent('i_username').getValue() + ',性别:';
if (fp.getComponent('male').checked) strMsg += '男';
if (fp.getComponent('female').checked) strMsg += '女';
strMsg += ',年龄:' + fp.getComponent('i_age').getValue();
strMsg += ',住址:' + fp.getComponent('i_address').getValue();
alert(strMsg);
}
//创建主窗口
new Ext.Window({
title:'Ext中FormPanel面板及Form控件横排测试(CSS)',
width:400,
closable:false,
collapsible:true,
draggable:false,
resizable:false,
modal:true,
border:false,
items:[fp],
buttons:[]
}).show();
});
</scrīpt>
</body>
</html>
上面代码比较简单,而且也添加了注释,这里只简单说明一下。
对于实现Radio控件的横排,首先是通过itemCls属性,修改他的浮动,使之float:left,同时还要修改clearCls,修改成clear:none,允许控件两边都可以浮动,这是因为在实际生成的HTML结构中,会有一个DIV专门负责清除浮动,如果使用默认的设置,接下来的那个控件并不会紧挨着他,也就是还会继续换行,对于第二个Raido控件,必须添加hideLabel:false属性,这样才能省去前面的标签设置,其他设置跟第一个一样。
如果要还原成换行布置,必须在想还原成换行布置的控件上设置itemCls属性,修改为clear:both,而这个设置在IE中好像不用设置也可以,而在FF中必须添加,所以干脆添加在上面,保证两个浏览器都正常浏览。
- 大小: 16.1 KB
分享到:
相关推荐
在EXTJS框架中,`Ext.FormPanel`和`Ext.Ajax.request`提供了两种不同的异步提交方法,它们各自有其特点和适用场景。下面我们将详细探讨这两种方式的区别。 1. **Ext.FormPanel的异步提交** `Ext.FormPanel` 是...
1. `form`:`Ext.FormPanel`是EXT JS中的表单面板,它是一个容器,可以容纳各种表单字段和其他组件。表单面板允许你定义布局、提交行为以及处理表单数据的方法。 2. `checkbox`:`Ext.form.Checkbox`是用于创建复选...
首先,Ext.FormPanel是ExtJS中用于创建表单的主要组件,它允许我们构建复杂的表单布局并处理用户输入的数据。 1. **Checkbox简单示例** Checkbox在ExtJS中用于创建复选框,可以用来让用户选择多个选项。在示例中,...
综上所述,这个实例展示了如何在Ext中创建一个完整的表单,包括表单的布局、字段的定义及验证、按钮及事件处理等多个方面。对于初学者来说,这是一个很好的学习资源,可以帮助他们快速掌握如何使用Ext构建复杂的Web...
**2.16 Form Panel (Ext.FormPanel)** - **xtype**: `form` - **功能描述**:Form Panel 是一个包含表单字段的面板。 - **主要用途**:用于创建和管理表单,支持数据验证和提交。 **2.17 Checkbox (Ext.form....
【EXTJS】Ext.AJAX与FormPanel在登录案例中的应用 EXTJS是一个强大的JavaScript库,主要用于构建富客户端Web应用程序。在EXTJS中,Ext.AJAX和Ext.FormPanel是两个核心组件,它们分别用于异步与服务器进行数据交互和...
在ExtJs中处理后台传递的Date对象并将其正确地显示在页面上,通常涉及到数据模型(Model)、存储(Store)、列模型(ColumnModel)以及渲染器(Renderer)的配置。以下是一个详细的步骤说明: 1. **创建数据模型...
`Ext.form.FormPanel`是表单的基础,通过`items`属性添加字段,`fields`定义字段配置。表单提交和验证可以通过`actionMethods`和`buttons`进行控制。 3. 分页工具栏(Paging Toolbar):EXT3.0提供了一个便捷的分页...
根据提供的文件信息,我们可以深入探讨Ext控件的相关知识点。标题提到的是“Ext控件大全”,并且描述中指出这些资料非常适合IT人士尤其是新手学习使用。接下来,我们将基于此内容详细解析Ext控件的基础知识、应用...
- `form`:`Ext.FormPanel` 或 `Ext.form.FormPanel`,用于创建表单的容器。 - `checkbox`:`Ext.form.Checkbox`,多选框组件。 - `combo`:`Ext.form.ComboBox`,下拉选择框。 - `datefield`:`Ext.form....
EXT选择月份的控件是EXT库中用于展示和选择日期的一种组件,主要针对月份级别的选择。EXT是一个基于JavaScript的富客户端应用框架,广泛应用于构建功能强大的Web应用程序。它提供了丰富的UI组件,包括日期选择器,这...
Form组件,即`Ext.form.FormPanel`,用于创建和管理表单数据。它可以包含各种输入控件,如文本字段、复选框、下拉列表等。表单数据可以方便地提交到服务器,或者与数据存储进行双向绑定。下面是一个创建简单表单的...
接下来将详细介绍文档中提到的几个核心概念,包括`Ext.MessageBox`、`Ext.Panel`、`Ext.Window`、`Ext.FormPanel`、`Ext.TabPanel`、`Ext.XTemplate`和`Ext.TreePanel`以及如何在Extjs中实现主题(换肤)功能。...
- **Form Components**: 用于构建表单的组件,如`Ext.FormPanel`,`Ext.form.Checkbox`,`Ext.form.TextField`等。 - **Chart Components**: 提供了各种图表组件,如`Ext.chart.Chart`,`Ext.chart.BarChart`,`Ext....
var formPanel = Ext.create('Ext.container.Container', { layout: 'fit', items: [treeCombo] }); Ext.create('Ext.container.Viewport', { layout: 'fit', items: [formPanel] }); } }); ``` 在给定的...
Ext Form支持多种控件,包括: - `Ext.form.TextArea`:用于多行文本输入。 - `Ext.form.DateField`:用于选择日期。 - `Ext.form.Hidden`:用于隐藏字段,不显示在用户界面上。 - `Ext.form.HtmlEditor`:提供一个...
在EXT JS 2.0框架中,DateTimeField控件是一个非常实用的组件,它扩展了基本的DateField控件,提供了更丰富的日期时间选择功能,包括小时、分钟和秒的显示与选择。这个控件是为了解决用户需要输入精确到秒的日期时间...