ExtJs4.2 登陆界面(点击验证码自动刷新,label实现click事件)

ExtJs4.2 登陆界面(点击验证码自动刷新,label实现click事件)

转载请注明:http://blog.csdn.net/qiuzhping/article/details/42596339

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<head>
	<title>Welcome</title>
	<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/main.css" />
	<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/icon.css" />
	<script type="text/javascript" src="<%=request.getContextPath()%>/Ext/include-ext.js"></script>
	<script type="text/javascript" src="<%=request.getContextPath()%>/common/Cookie.js"></script>
</head>
<script type="text/javascript">

	function randomColor(){
		  var colorStr=Math.floor(Math.random()*0xFFFFFF).toString(16).toUpperCase();
		  return"#"+"000000".substring(0,6-colorStr)+colorStr;
	}

	function createCode() {
		code = "";
		var codeLength = 4;
		var random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C',
				'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
				'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');//随机数
		for (var i = 0; i < codeLength; i++) {
			var index = Math.floor(Math.random() * 36);
			code += random[index];
		}
		cp.set("hiddenValidationCode",code);
		return code;
	}
	Ext.ux.ValidationCode = Ext.extend(Ext.Panel, {
		initComponent : function() {
			Ext.apply(this, {
				items : [ {
					xtype : 'label',
					id : 'validationCode',
					text:createCode(),
					style:'font-size: 20px; color: #CC0000;background-color:#6699FF',
					listeners : {
						render : function() {
							Ext.fly(this.el).on('click', function(e, t) {
								Ext.getCmp("validationCode").setText(createCode());
							});
						},
						scope : this
					}
				} ]
			});
			Ext.ux.ValidationCode.superclass.initComponent.call(this);
		}
	});

	Ext.onReady(function() {
		Ext.QuickTips.init();
		var loginForm = new Ext.form.Panel({
			listeners : {
				specialkey : function(field, e) {
					if (e.getKey() == Ext.EventObject.ENTER) {
						login();
					}
				}
			},
			fieldDefaults : {
				msgTarget : 'side',
				labelWidth : 100
			},
			defaultType : 'textfield',
			defaults : {
				margin : '10 10 10 45'
			},
			items : [ {
				fieldLabel : 'Login Name:',
				name : 'user.username',
				id:'username',
				emptyText : 'Please enter your login name',
				allowBlank : false,
				blankText : 'Login name cannot be empty'
			}, {
				name : 'user.password',
				fieldLabel : 'Password:',
				id:'userpassword',
				inputType : 'password',
				emptyText : 'Please enter your password',
				allowBlank : false,
				blankText : 'Password can not be empty'
			}, {
				xtype : 'container',
				layout : 'hbox',
				fieldDefaults : {
					labelAlign : 'side'
				},
				items : [ {
	                xtype:'textfield',
	                editable : false,
	                fieldLabel: 'validationCode',
	                value:'validationCode',
	                id:'operatorId',
	                name: 'operatorId',
	                hideable:false,
					hidden:true
	             },{
					name : 'checkValidationCode',
					id : 'checkValidationCode',
					width : 180,
					xtype : 'textfield',
					fieldLabel : 'Validation Code:',
					listeners : {
				       change : function(field,newValue,oldValue){
				          if(newValue.length > 4){
				        	  Ext.Msg.alert('Information','Validation code length must be equals 4.');
				        	  Ext.getCmp("checkValidationCode").setValue("");
				          }
				       }
					}
				}, new Ext.ux.ValidationCode({
					renderTo : document.body
				})]
			} ],
			buttonAlign : 'center',
			buttons : [ {
				text : 'Submit',
				handler : login
			}, {
				text : 'Reset',
				handler : reset
			} ],
			listeners : {
				render : function(input) {
					new Ext.KeyMap(input.getEl(), [ {
						key : Ext.EventObject.ENTER,
						fn : function() {
							login();
						}
					} ]);
				}
			}
		})

		var win = Ext.create('Ext.window.Window', {
			title : 'Login Form',
			collapsible : false,
			animCollapse : false,
			maximizable : false,
			closable : false,
			draggable : false,
			width : 350,
			items : loginForm
		});
		win.show();
		function checkUserInfo(){
			Ext.getCmp("userpassword").setValue(Ext.util.Format.trim(Ext.getCmp("userpassword").getValue()));
			Ext.getCmp("username").setValue(Ext.util.Format.trim(Ext.getCmp("username").getValue()));
			if(Ext.getCmp("userpassword").getValue() == '' || Ext.getCmp("username").getValue() == ''){
				Ext.Msg.alert("Information",'Invalid input. Please check form entries.');
				return false;
			}
			return true;
		}
		function login() {
			if(!checkUserInfo()){
				return;
			}
			var code1 = cp.get("hiddenValidationCode");
			var code2 = Ext.getCmp("checkValidationCode").getValue();
			if(code1.toLowerCase() != code2.toLowerCase()){
			   Ext.Msg.alert('Information','Please enter validation code');
       		   return;
       	  	}
			if (loginForm.isValid()) {
				loginForm.getForm().submit({
					clientValidation : true,
					url : '/report/Login!login.action',
					method : 'post',
					success : function(form, action) {
						Ext.Msg.alert("Information","Login success");
						cp.set("username",Ext.getCmp("username").getValue());
						document.location = "index.jsp";
					},
					failure : function(form, action) {
						Ext.Msg.alert("Information",'Invalid login name or password!');
					}
				})
			}
		}
		function reset() {
			loginForm.form.reset();
		}
	});
</script>
</html>

效果图:

时间: 2024-10-05 19:31:57

ExtJs4.2 登陆界面(点击验证码自动刷新,label实现click事件)的相关文章

点击label时click事件被触发两次的坑

原文:点击label时click事件被触发两次的坑 今天帮群里的朋友看一段代码的时候偶然间遇到一个label的坑,点击label的时候,监听的click事件被执行两次: 具体代码如下: 1 <div id="test"> 2 <input type="checkbox" name="abc" id="abc"/> 3 <label for="abc">3423432432

点击按钮自动刷新页面

<问题> <button type="button" style="height: 29px; float: left; width: 18%; border: none; border-left: 1px solid #d07878; border-radius: 0 4px 5px 0; padding-top: 3px" onclick="return search()"> 点击上述按钮,页面自动刷新 <原因&

点击验证码可以刷新验证码

<img src="code.jsp" alt="验证码" height="20" align="bottom" style="cursor:pointer;" title="看不清可单击图片刷新" onclick="this.src='code.jsp?d='+Math.random();" /> onClick="javascript:doc

图片验证码及自动刷新

<script> function imgCode() { $("#imgCode").on("click", function() { $(this).attr("src", '/user/verify?t=' + Math.random()); }); }; /* 当后台返回验证码错误时,绑定trigger("click")事件即可 */ </script>

Yii-验证码不自动刷新

Yii中render和renderPartial的区别就能解释为什么不刷新的原因 在进行页面输出渲染的时候区别: 1.render 输出父模板的内容,将渲染的内容,嵌入父模板.|2.renderPartial 则不输出父模板的内容.只对本次渲染的局部内容,进行输出. 同时还有个重要的区别: render 函数内部默认执行processOutput($output)函数, 会将把组件,比如 CTreeView 里面注册到 CClientScript 里面的需要的脚本进行渲染输出. 而renderP

yii验证码Captcha使用以及为什么验证码不刷新问题

Web开发的过程中, 经常会用到验证码, 以防止机器人不断的提交数据, 造成网站的瘫痪. Yii里提供了一个验证码的插件, 就是Captcha. 第一步: 在项目中使用Captcha需要以下一些设置:在Controller里添加方法 actions public function actions () { return array ( 'captcha' => array ( 'class' => 'CCaptchaAction' , 'minLength' => 1 , 'maxLen

带有Checkbox和Select的自动刷新_JQuery实现

<div id="showRefresh" class="row"> <label class="col-sm-6"><input type="checkbox" id="autoRefresh" />自动刷新</label> <div class="col-sm-4"> <select class="form-

一个简单WPF登陆界面,包含记住密码,自动登录等功能,简洁美观

简介:这是一个自己以前用WPF设计的登陆界面,属于一个实验性的界面窗体,如果用于产品还很有不足.但也是有一点学习价值.后台代码略有复杂,但基本上都有注释 分类,略有代码经验的一般都能看懂. 登陆界面外观:可以对登陆成功的信息,进行保存.包括记住密码,自动登陆等信息,默认显示上一次登陆成功的用户信息. 登陆界面保存的登陆信息: 可以删除不必要的登陆信息 登陆界面登陆Loading状态显示界面:登陆中显示遮罩层 在1.5秒左右的时间内可以取消登录状态 源码下载: 点击下载源码

phpcmsV9后台登陆界面去掉验证码

第一步 找到文件phpcms\modules\admin\index.php注释掉第33行到第36行 $code = isset($_POST['code']) && trim($_POST['code']) ?trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER); if ($_SESSION['code'] != strtolower($code)) { showmessage(L('code_error'),