ExtJs 登陆界面

本文详细介绍了如何使用ExtJS框架创建一个功能完善的登录界面,涵盖了组件布局、交互处理及服务器验证。通过实例代码解析,展示从界面设计到与后台数据交互的全过程。
摘要由CSDN通过智能技术生成




Ext.onReady(function() {

	Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
	// 使用表单提示
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';

	// 根据Cookie里面存放的CSS style来动态改变id为text的样式
	var file = Ext.state.Manager.get('style');
	Ext.util.CSS.swapStyleSheet('test', 'resources/css/' + file);
	// 定义表单
	var loginForm = new Ext.FormPanel({
		labelAlign : 'top',
		frame : true,
		monitorValid : true,// 把有formBind:true的按钮和验证绑定
		id : 'login',
		bodyStyle : 'padding:5px 5px 0',
		width : 400,
		// 定义表单元素
		// 指定容器中的元素
		items : [{
			layout : 'table', // 把整个空间划分成两列
			items : [{
						width : 180,
						html : '<img src="resources/images/House.jpg" width=170/>' // 左边列放一个logo
					}, {
						width : 180,
						layout : 'form', // 右边列再分成上下两行
						items : [{
									xtype : 'textfield',
									// 元素的名称
									name : 'login.username',
									// 指定字段的标签
									fieldLabel : '帐号',
									width : 140,
									allowBlank : false,
									// 为空时提示信息
									blankText : '帐号不能为空'
								}, {
									xtype : 'textfield',
									name : 'login.password',
									fieldLabel : '密码',
									allowBlank : false,
									width : 140,
									blankText : '密码不能为空',
									inputType : 'password'
								}, {
									items : [{
										layout : 'table', // 把整个空间划分成两列
										items : [{
											layout : 'form', // 右边列再分成上下两行
											width : 85,
											items : [{
												name : 'login.validateCode',
												xtype : 'textfield',
												fieldLabel : '验证码',
												regex : /^[0-9]{4}$/,
												regexText : '图片不清楚吗?请点击图片进行刷新,验证码为4位数字!',
												width : 70,
												allowBlank : false,
												blankText : '验证码不能为空!'
											}]
										}, {
											html : '<img id="photo" src="user.action"  οnmοusedοwn="changeImg(this)"/>'
										}]
									}]
								}]
					}]

		}],
		buttons : [{
			text : '登陆',
			formBind : true,
			type : 'submit',
			// 定义表单提交事件
			handler : function() {
				if (loginForm.form.isValid()) {// 验证合法后使用加载进度条
					Ext.MessageBox.show({
								title : '请稍等',
								msg : '正在登陆...',
								progressText : '',
								width : 300,
								progress : true,
								closable : false,
								animEl : 'loading'
							});
					// 控制进度速度
					var f = function(v) {
						return function() {
							var i = v / 11;
							Ext.MessageBox.updateProgress(i, '');
						};
					};

					for (var i = 1; i < 12; i++) {
						setTimeout(f(i), i * 150);
					}

					// 提交到服务器操作
					loginForm.form.doAction('submit', {
								url : 'login.action',// 文件路径
								method : 'post',// 提交方法post或get
								params : '',
								// 提交成功的回调函数
								success : function(form, action) {
									if (action.result.data == 'ok') {// ???
										window.location = 'main.html';
									} else {
										Ext.Msg.alert('登陆失败',
												action.result.data);
									}
								},
								// 提交失败的回调函数
								failure : function() {
									Ext.Msg.alert('错误', '服务器出现错误请稍后再试!');
								}
							});
				}
			}
		}, {
			text : '取消',
			handler : function() {
				loginForm.form.reset();
			}// 重置表单
		}]
	});
	// 定义窗体

	// 构建一个窗口面板容器
	win = new Ext.Window({
		// 把该面板绑定于wins这个DIV对象上
		// el : 'wins',
		// 窗口面板标题
		title : '登陆房屋出租系统',
		// 窗口面板宽度
		width : 400,
		// 不容许任意伸缩大小
		resizable : false,
		// 高度
		autoHeight : true,
		// 该面板布局类型
		layout : 'column',
		// 面板是否可以关闭及打开
		collapsible : true,
		// 窗体拖拽 默认是TRUE
		draggable : false,
		defaults : {
			// 容器内元素是否显示边框
			border : false
		},
		items : {
			// 指定内部元素所占宽度1表示100% .5表示50%
			columnWidth : 1,
			// 把表单面板容器增加入其中,使之成为窗口面板容器的子容器
			items : loginForm
		}
			// // 面板中按钮的排列方式
			// buttonAlign : 'center',
			// // 面板底部的一个或多个按钮对象
			// buttons : [ {
			// // 按钮上需显示的文本
			// text : '登陆',
			// // 单击按钮时响应的动作
			// handler : login
			// }, {
			// text : '重置',
			// handler : reset
			// }]
		});

	win.show();// 显示窗体

});
// 点击更换验证码
function changeImg(obj) {

	obj.src = "user.action" + "?t=" + Math.random();
}


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值