`
8792321
  • 浏览: 39626 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

ext表单控件

    博客分类:
  • ext
阅读更多

js文件

Ext.onReady(function() {
	// 对于提交中出现的乱码,在Ext中可以修改Request Header中Content-Type的设置
	Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";
	Ext.QuickTips.init();
	Ext.apply(Ext.QuickTips.getQuickTip(), {
		dismissDelay : 0
	});
	Ext.form.Field.prototype.msgTarget = 'side';

	var data = [['湖北', 'hubei'], ['江西', 'jiangxi'], ['江苏', 'jiangsu'],
			['安徽', 'anhui'], ['北京', 'beijing'], ['上海', 'shanghai'],
			['天津', 'tianjin']];
	var store = new Ext.data.SimpleStore({
		fields : ['chinese', 'english'],
		data : data
	});

	var combo1 = new Ext.form.ComboBox({
		id : 'province',
		name : 'province',
		hiddenName : 'provinceHidden',
		displayField : 'chinese',
		valueField : 'english',
		mode : 'local',
		minChars : '1',
		queryDelay : 300,// 延时300毫秒
		store : store,
		triggerAction : "all",
		pageSize : 3,
		width : 200,
		labelSeparator : ':',
		emptyText : '请选择',
		fieldLabel : '省',
		readOnly : false,
		listeners : {
			select : function(comb, record, index) {
				alert(comb.getValue());
			}
		}
	});
	// 创建Form面板
	var form = new Ext.form.FormPanel({
		id : 'form',
		name : 'form',
		// applyTo : 'div1',
		frame : true,
		bodyStyle : 'padding:1px 0 0 0;',
		buttonAlign : 'center',
		labelAlign : 'left',
		labelWidth : 60,
		width : 600,
		defaultType : 'textfield',
		items : [{
			id : 'username',
			name : 'username',
			allowBlank : false,
			msgTarget : 'qtip',
			fieldLabel : '姓名',
			itemCls : 'sex-male', // 向左边浮动,处理控件横排
			clearCls : 'allow-float'// 允许两边浮动
		}, {
			id : 'password',
			name : 'password',
			fieldLabel : '密码',
			inputType : 'password'
		}, {
			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',
			width : 60,
			itemCls : 'sex-female', // 向左浮动,处理控件横排
			clearCls : 'allow-float', // 允许两边浮动
			hideLabel : true
				// 不显示前面"性别"的标签
				}, {
					xtype : 'checkbox',
					boxLabel : '是否毕业',
					name : 'graduate',
					id : 'graduate',
					itemCls : 'sex-female', // 向左浮动,处理控件横排
					clearCls : 'allow-float', // 允许两边浮动
					hideLabel : true
				// 不显示前面"性别"的标签
				}, {
					xtype : 'numberfield',
					fieldLabel : '年龄',
					id : 'i_age',
					name : 'n_age',
					allowNegative : false,
					allowDecimals : false,
					itemCls : 'age-field', // 向左浮动,处理控件横排
					clearCls : 'allow-float', // 允许两边浮动
					width : 90
				}, {
					xtype : 'textfield',
					fieldLabel : '住址',
					name : 'n_address',
					allowBlank : false,
					emptyText : '请输入',
					id : 'i_address',
					maxLength : 20,
					itemCls : 'stop-float', // 不允许浮动,结束控件横排
					width : 300
				}, {
					xtype : 'datefield',
					fieldLabel : '出生日期',
					name : 'n_birthday',
					id : 'i_birthday',
					disabledDays : [0],// 禁止选择星期日
					itemCls : 'sex-male', // 不允许浮动,结束控件横排
					clearCls : 'allow-float', // 允许两边浮动
					width : 120
				}, {
					xtype : 'timefield',
					fieldLabel : ' ',
					name : 'n_time',
					id : 'i_time',
					itemCls : 'sex-male', // 不允许浮动,结束控件横排
					clearCls : 'allow-float', // 允许两边浮动
					width : 120,
					hideLabel : true
				}, {
					xtype : "trigger",
					fieldLabel : "触发",
					anchor : "50%",
					onTriggerClick : function(e) {// 在这里写你要实现的事件,很容易扩展
						alert("www.langsin.com");
					}
				}, {
					xtype : 'textarea',
					fieldLabel : '备注',
					name : 'n_area',
					id : 'i_area',
					// itemCls:'sex-male', //不允许浮动,结束控件横排
					// clearCls:'allow-float', //允许两边浮动
					width : 300
				}, {
					xtype : 'checkboxgroup',
					fieldLabel : '外协录入',
					columns : 4,
					items : [{
						boxLabel : '外协申请批件',
						name : 'lrb1',
						inputValue : '100'
					}, {
						boxLabel : '合同洽谈',
						name : 'lrb2',
						inputValue : '101'
					}, {
						boxLabel : '市场准入材料',
						name : 'lrb3',
						inputValue : '102'
					}, {
						boxLabel : '网上审批',
						name : 'lrb4',
						inputValue : '103'
					}, {
						boxLabel : '合同信息',
						name : 'lrb5',
						inputValue : '104'
					}, {
						boxLabel : '付款情况',
						name : 'lrb6',
						inputValue : '105'
					}, {
						boxLabel : '检查验收',
						name : 'lrb7',
						inputValue : '106'
					}]
				}, {
					xtype : 'combo',
					fieldLabel : '网站',
					name : 'n_url',
					triggerAction : "all",// 请设置为"all",否则默认为"query"的情况下,你选择某个值后,再此下拉时,只出现匹配选项,如果设为"all"的话,每次下拉均显示全部选项
					listeners : {
						select : function(comb, record, index) {
							alert(comb.getValue());
						}
					},
					readOnly : true,
					transform : "select",// html中的id
					lazyRender : true,
					width : 120
				}, {// 显示图片
					id : 'browseImage',
					fieldLabel : '照片',
					autoCreate : {
						tag : 'input',
						type : 'image',
						src : 'demo/oicq.gif',
						// src : Ext.BLANK_IMAGE_URL,
						style : 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);',
						name : 'imageBrowse'
					}
				}, {
					inputType : 'file',
					id : 'imageUpload',
					fieldLabel : '文件',
					width : 300
				}, {
					id : 'url',
					name : 'url',
					allowBlank : false,
					width : 300,
					fieldLabel : '网址',
					value : 'http://www.163.com',
					vtype : 'url'// url,email,alpha,alphanum
				}, combo1, {
					xtype : 'htmleditor',
					id : 'editor',
					name : 'editor',
					fieldLabel : '编辑器',
					// fontFamilies:['宋体','隶书','楷体'],
					width : 250,
					anchor : "99%"
				}

		],
		buttons : [{
			text : '确定',
			handler : onOK
				// 实际应用一般是处理form.getForm.submit()事件
				}, {
					text : '重置',
					handler : function() {

						form.form.getEl().dom.reset();// 使用Dom的刷新方法
						form.getForm().reset();// Ext reset()
						// 方法刷新时,无法刷新inputType:file的值的解决方法
					}
				}],
		keys : [{ // 处理键盘回车事件
			key : Ext.EventObject.ENTER,
			fn : onOK,
			scope : this
		}]
	});

	var menus = new Ext.menu.Menu({
		shadow : 'frame',// 设置菜单四打边有阴影
		items : [{
			text : '是否启用',
			checked : true,
			handler : onSave
		}, {
			text : '另存为',
			handler : onSave,
			menu : new Ext.menu.Menu({
				items : [{
					text : '文件另存为',
					group : 'theme',
					checked : false,
					handler : onSave
				}, {
					text : '图片另存为',
					group : 'theme',
					checked : false,
					handler : onSave
				}]
			})
		}]
	});
	function onSave(item) {
		alert(item.text);
	}

	// 工具栏
	var toolbar = new Ext.Toolbar({
		applyTo : 'tool',
		width : 500
	});
	toolbar.addButton([{
		text : '新建'
	}, {
		text : '打开'
	}, {
		text : '保存'
	}]);
	toolbar.addSeparator();
	toolbar.addField(new Ext.form.TextField({
		width : 30
	}));
	toolbar.addFill();
	toolbar.addText('静态文本');
	toolbar.add('-', '->', {
		text : '文件',
		menu : menus
	});

	// 确定按钮事件,这里只是简单获取各控件值,实际应用一般和后台脚本结合
	function onOK() {
		var strMsg;
		strMsg = '姓名:' + form.getComponent('username').getValue() + ',性别:';
		if (form.getComponent('male').checked)
			strMsg += '男';
		if (form.getComponent('female').checked)
			strMsg += '女';
		strMsg += ',年龄:' + form.getComponent('i_age').getValue();
		strMsg += ',住址:' + form.getComponent('i_address').getValue();

		// 通过循环遍历checkboxgroup获得值
		// alert(strMsg);
		var checkboxgroup = form.items.itemAt(11);
		// alert(checkboxgroup.getXType());//类型

		var vItems = checkboxgroup.items;
		var vCount = vItems.getCount();
		for (var i = 0; i < vCount; i++) {
			// alert(vItems.itemAt(i).getValue());//值
		}

		form.form.submit({
			waitMsg : '登陆中,请稍等...',
			method : 'POST',
			clientValidation : true,
			params : {
				p : '参数'
			}, // 传递的参数
			url : "demo/MyJsp.jsp",
			// 定义要跳转的url,格式被请求的页面格式为{ 'success': true,'msg': '成功'}
			success : function(form, action) {
				// Ext.Msg.alert('信息',"提示:"+"response.responseText");//加粗体是得到后台的具体返回信息。
				Ext.Msg.alert('提示', "数据修改成功");// 成功提示信息
			},
			failure : function(form, action) {
				Ext.Msg.alert('提示', action.failureType);
			}
		});
	}

	// 创建主窗口
	var win = new Ext.Window({
		title : 'Ext中的FormPanel面板及Form控件',
		width : window.document.body.clientWidth / 2,
		closable : true,
		y : 10,
		collapsible : true,
		// draggable: false,
		resizable : false,
		modal : false,
		closeAction : 'hide',
		tbar : [{
			text : '顶部按钮'
		}],
		border : true,
		manager : wgroup,
		items : [form],
		buttons : []
	});
	win.show();

	var wgroup = Ext.WindowGroup();
		// 隐藏全部window
		// wgroup.hideAll();

});

/**
 * 在Ext2.2的Ext.form.FormPanel中如果有RadioGroup或者CheckboxGroup,那么
 * FormPanel.form.setValues方法对这2个东东内部的radio和checkbox无法动态赋值,需要对
 * Ext.form.BasicForm的findField方法进行修正,代码如下:
 */
Ext.override(Ext.form.BasicForm, {
	findField : function(id) {
		var field = this.items.get(id);
		if (!field) {
			this.items.each(function(f) {
				if (f.isXType('radiogroup') || f.isXType('checkboxgroup')) {
					f.items.each(function(c) {
						if (c.isFormField
								&& (c.dataIndex == id || c.id == id || c
										.getName() == id)) {
							field = c;
							return false;
						}
					});
				}

				if (f.isFormField
						&& (f.dataIndex == id || f.id == id || f.getName() == id)) {
					field = f;
					return false;
				}
			});
		}
		return field || null;
	}
});

 html文件

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Form控件测试</title>
		<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 50px;}
		</style>
		<link rel="stylesheet" type="text/css"
			href="extjs/resources/css/ext-all.css" />
		<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
		<script type="text/javascript" src="extjs/ext-all.js"></script>
		<script type="text/javascript" src="extjs/locale/ext-lang-zh_CN.js"></script>
		<script type="text/javascript" src="form.js"></script>
	</head>
	<body>
		<div id="tool"></div>
		<select id="select">
			<option value="1">
				浪曦
			</option>
			<option value="2">
				博客园
			</option>
			<option value="3">
				百度
			</option>
			<option value="4">
				新浪
			</option>
		</select>
	</body>
</html>

 

分享到:
评论

相关推荐

    Ext .net控件

    Ext.NET控件是一种将流行的JavaScript库Ext JS与微软的.NET框架相结合的技术,旨在为开发者提供在ASP.NET环境中创建丰富交互式Web应用的能力。通过将Ext JS的功能集成到.NET控件中,开发人员可以利用.NET的强大后端...

    EXT 时间控件

    3. 将控件附加到DOM:将时间控件添加到页面的某个元素中,如一个容器或者表单字段。 4. 监听事件:绑定`select`事件,当用户选择时间后执行相应的回调函数。 例如,以下是一个简单的EXT时间控件使用示例: ```html...

    Ext时间控件.rar

    时间控件通常会与表单结合使用,通过事件监听和验证机制确保用户输入的时间符合业务规则。 实现这样一个时间控件,开发者可能需要利用ExtJS的以下核心概念和技术: 1. **组件(Component)**:ExtJS中的所有可视化...

    extjs4的Ext.frorm.Panel控件属性说明和表单控件说明

    主要用例子说明extjs4的form表单的运用,其中有表单属性说明,表单控件运用说明如: title:'表单', //表单标题 bodyStyle:'padding:5 5 5 5', //表单边距 height:120, //表单高度 width:200, //表单宽度 ...

    Ext DateField控件 - 只选择年月

    开发者可以通过引入`monthPick.js`,简单配置即可在表单中添加只选择年月的DateField控件。 总的来说,"Ext DateField控件 - 只选择年月"这一主题涉及到Web前端开发中的组件定制、日期选择控件的优化以及JavaScript...

    EXT 表单验证EXT 表单验证

    EXT表单验证是EXT JS框架中的一个重要特性,用于在用户输入数据时确保数据的正确性和完整性。EXT JS是一个强大的JavaScript库,专为构建富客户端Web应用程序而设计。它提供了丰富的组件库,包括表格、表单、菜单等,...

    ext.net 控件

    Ext.NET提供了广泛的AJAX控件,如网格、表单、树、图表等,它们能在不刷新整个页面的情况下与服务器交互,实现快速响应和高效的数据操作。 3. **丰富的界面效果**: ExtJS库以其精美、专业的界面设计而闻名,Ext...

    Ext控件大全,适合新手学习

    根据提供的文件信息,我们可以深入探讨Ext控件的相关知识点。标题提到的是“Ext控件大全”,并且描述中指出这些资料非常适合IT人士尤其是新手学习使用。接下来,我们将基于此内容详细解析Ext控件的基础知识、应用...

    ext3.0所有控件演示代码

    这个压缩包文件提供了EXT3.0中的几乎全部控件的演示代码,覆盖了表格、表单、分页工具栏以及图标等多个重要组件的使用方法。下面将详细介绍这些知识点。 1. 表格(Grid):EXT3.0的表格控件是其核心功能之一,能够...

    ext表单

    EXT表单,是一种基于JavaScript和Ajax技术的富客户端(Rich Client)表单处理技术,它源自EXT JS库,专门用于构建交互性强、用户体验优秀的Web应用程序。EXT JS是一个强大的JavaScript库,提供了一系列组件化的UI...

    ext 日期时间控件

    EXT提供了丰富的UI组件,包括表格、面板、窗口、表单等,而日期时间控件则是表单组件中的一个重要部分。 "EXT日期时间控件"是一个专门用于显示和编辑日期及时间的控件,它可以精确到时、分、秒,满足了对时间精确度...

    Ext自定义控件库

    "Ext自定义控件库"正是这样一个资源集合,包含了开发者封装的一些特殊功能或样式调整的Ext控件,适用于那些标准组件无法满足需求的场景。 1. **GridPanel.xdc**:GridPanel是ExtJS中的核心组件之一,用于展示表格...

    ext表单设计器,常用表单拖拉实现

    EXT表单设计器是一款基于EXT库的强大工具,专用于快速、高效地构建Web应用程序中的表单。EXT是一个流行的JavaScript框架,由Sencha公司开发,用于构建富客户端应用。EXT表单设计器充分利用EXT库的功能,提供了可视化...

    ext日期时间控件2

    在实际应用中,EXT日期时间控件2通常与其他EXT组件如表格、表单等结合使用,构建复杂的用户界面。例如,在一个日程管理应用中,用户可以通过这个控件来设定事件的开始和结束时间。开发者可以通过配置项来定制控件的...

    EXT 时间控件 3.0以上使用

    EXT时间控件可以轻松与其他EXT组件(如GridPanel、FormPanel等)集成,用于数据表单的输入或展示。同时,EXT支持Ajax和服务器端的数据交互,因此DateTimeField也能方便地配合服务器端进行数据验证和存储。 6. **...

    Ext时间日期选择控件,精确到秒

    3. 将控件添加到表单或面板中,以便用户进行交互。 4. 处理用户的选择,通过监听控件的事件(如`select`事件)来获取选定的时间或日期。 总之,EXTJS 5的时间日期选择控件提供了强大的功能,不仅支持精确到秒的选取...

    ext扩展控件------向导控件(上一步,下一步,返回)

    每个步骤面板可以是EXT的任何组件,如表格、表单、面板等,用于展示特定步骤的内容。 2. **导航栏(Navigation Bar)**:这是用户进行步骤切换的区域,通常包括“上一步”、“下一步”和“完成”等按钮。在某些情况...

    ext_表单提交_数据校验

    ### ext_表单提交_数据校验:深入解析与实践 #### 一、文本框输入控件(Ext.form.TextField) 在Ext JS框架中,`Ext.form.TextField`是一种用于收集用户输入的基本控件,它提供了丰富的配置选项来实现数据校验。...

    EXT表单验证之TextField

    在EXT表单中,TextField是最常见的输入控件,用于接收用户的文本输入。`vtype`是EXT TextField的一个关键属性,用于定义输入字段的验证规则,确保用户输入的数据符合特定格式或条件。 EXT中的TextField支持多种...

    ext asp.net控件Ext是一个强大的AJAX开源代码

    Ext.NET控件不仅具有高度定制性和灵活性,而且在性能上也有出色表现。 首先,ExtJS是一个开源的JavaScript库,主要用于构建富客户端Web应用。它包含了一系列的组件,如表格、面板、表单、菜单、树形视图等,以及...

Global site tag (gtag.js) - Google Analytics