zoukankan      html  css  js  c++  java
  • javascript文本框自动验证数字和日期

    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    <title>New Page 1</title>
    <script>
    var date_seperator = '-';
    var decimal_seperator = ',';
    var thousand_seperator = '.';
    	var K_Validate = {
    		Version: '1.0.0',
    		Load: function(){
    			var children = document.getElementsByTagName('input');
    			for (var i = 0; i < children.length; i++) {
    				var classNames = children[i].className.split(' ');
    					
    					if (children[i].className.match(new RegExp("(^|\\s)validatenum(\\s|$)"))) {
    						this.addInListener(children[i],'keypress',K_Validate.checkNum);
    						
    						if (children[i].className.match(new RegExp("(^|\\s)thousand(\\s|$)"))) {
    							this.addInListener(children[i],'focus',K_Validate.normalFormat);
    							this.addInListener(children[i],'blur',K_Validate.formatThousand);
    						}
    					
    					}
    					if (children[i].className.match(new RegExp("(^|\\s)validatedate(\\s|$)"))) {
    							this.addInListener(children[i],'keypress',K_Validate.checkDate);
    							this.addInListener(children[i],'blur',K_Validate.isDate);
    							children[i].maxlength=10;
    						}					
    		
    			}
    		},
    		addInListener : function (a,b,c){
    			a["on"+b]=c
    		},
    		
    		isNumeric: function(ch) {
    			if (!(ch >= '0' && ch <= '9')) {
    				return false;
    			}
    		return true;
    		},
    		
    		elo : function (e){
    			if (!e) var e = window.event;
    			var eid = (window.event) ? e.srcElement : e.target;
    			if(!eid) return false;
    			return eid;
    		},
    	
    		checkNum: function (e,not_dec,not_minus) {
    			if(!e) e = window.event;
    			if(window.event){
    				keynum = e.keyCode
    			}else if(e.which){
    				keynum = e.which
    			}	
    			if (K_Validate.elo(e).className.match(new RegExp("(^|\\s)nominus(\\s|$)"))) not_minus = true;
    			if (K_Validate.elo(e).className.match(new RegExp("(^|\\s)nodecimal(\\s|$)"))) not_dec = true;
    			if (!not_minus) not_minus = false;
    			if (!not_dec) not_dec = false;
    			var obj = (window.event) ? e.srcElement: e.target;
    
    			var keychar;
    			if (keynum == null) return true;
    			goods = '0123456789';
    			decimal_used = (obj.value.indexOf(decimal_seperator) != -1) ? true:false;
    			minus_used = (obj.value.indexOf('-') != -1) ? true:false;
    
    			if(!not_dec && !decimal_used) goods = goods+decimal_seperator;
    			keychar = String.fromCharCode(keynum);
    			keychar = keychar.toLowerCase();
    			goods = goods.toLowerCase();
    			var curr_pos = K_Validate.insertAtCursor(obj);
    			if(!not_minus && curr_pos<1 && !minus_used) goods = goods+'-';
    
    			if (goods.indexOf(keychar) != -1)
    				return true;
    
    			if ( keynum==null || keynum==0 || keynum==8 || keynum==9 || keynum==13 || keynum==27 )
    				return true;
    
    			return false;
    		},
    		
    		insertAtCursor : function (obj) {
    			if (document.selection) {
    			sel=document.selection;
    				if(sel)
    				{
    					r2=sel.createRange();
    					rng=obj.createTextRange();
    					rng.setEndPoint("EndToStart", r2);
    					i=rng.text.length;
    				}
    				return i;
    			}else if (obj.selectionStart || obj.selectionStart == '0') {
    				return obj.selectionStart;
    			}
    		},
    		
    		
    		
    		formatThousand : function (e) {
    			if(!e) e = window.event;
    			obj = K_Validate.elo(e);
    			formattedNbr="";
    			if (obj.value.match(new RegExp(/-/))){
    				var minus=true;
    				obj.value = obj.value.replace("-","");
    			}
    			var temp_val	=	obj.value.split(decimal_seperator);
    			len = temp_val[0].length;
    			for (i=len-1, k=1 ; i>=0; i = i-1,k++ )  {
    				if (((k % 3)	== 0) && (k != len))
    					formattedNbr = thousand_seperator + temp_val[0].charAt(i) + formattedNbr;
    				else
    					formattedNbr = temp_val[0].charAt(i) + formattedNbr;
    			}
    			formattedNbr = (minus)?'-'+formattedNbr:formattedNbr;
    			if(temp_val[1]){
    				obj.value = formattedNbr+decimal_seperator+temp_val[1];
    			}else{
    				obj.value = formattedNbr;
    			}
    		},
    
    		normalFormat : function(e)	{
    			if(!e) e = window.event;
    			obj = K_Validate.elo(e);
    			tempText= new String();
    			text = obj.value;
    			if (text=="") { 
    				return false;
    			}
    			len = text.length;
    			for(i=0; i < len; ++i) {
    				ch = text.charAt(i);
    				if ((ch >= '0' && ch <= '9') || ch==decimal_seperator || ch=='-') {
    					tempText+=ch;
    				}
    			}
    			obj.value=tempText;
    			return true;
    		},
    		
    		checkDate : function (e){
    			if(!e) e = window.event;
    			var obj = (window.event) ? e.srcElement: e.target;
    			if(window.event) // IE
    			{
    				keynum = e.keyCode
    			}else if(e.which) {
    				keynum = e.which
    			}
    			goods = '0123456789';
    			keychar = String.fromCharCode(keynum);
    			keychar = keychar.toLowerCase();
    			var curr_pos = K_Validate.insertAtCursor(obj);
    			if (goods.indexOf(keychar) != -1){
    				if(curr_pos==2 && obj.value.charAt(2)!=date_seperator && obj.value.length<3){
    					obj.value = obj.value+date_seperator;
    					curr_pos++;
    				}
    				if(curr_pos==5 && obj.value.charAt(4)!=date_seperator && obj.value.length<6){
    					obj.value = obj.value+date_seperator;
    					curr_pos++;
    				}
    			return true;
    
    			}
    			if(keychar==date_seperator && (curr_pos==5 || curr_pos==2))
    				return true;
    
    			if ( keynum==null || keynum==0 || keynum==8 || keynum==9 || keynum==13 || keynum==27 )
    				return true;
    
    			return false;
    		},
    		
    		getDateFromFormat : function (val,format){
    			val=val+"";
    			format=format+"";
    			var i_val=0;
    			var i_format=0;
    			var c="";
    			var token="";
    			var token2="";
    			var x,y;
    			var now=new Date();
    			var year=now.getYear();
    			var month=now.getMonth()+1;
    			var date=1;
    			var hh=now.getHours();
    			var mm=now.getMinutes();
    			var ss=now.getSeconds();
    			var ampm="";
    			while(i_format < format.length){
    				c=format.charAt(i_format);
    				token="";
    				while((format.charAt(i_format)==c) &&(i_format < format.length)){
    					token += format.charAt(i_format++);
    				}
    				if(token=="yyyy" || token=="yy" || token=="y"){
    					if(token=="yyyy"){x=4;y=4;}
    					if(token=="yy"){x=2;y=2;}
    					if(token=="y"){x=2;y=4;}
    					year=K_Validate._getInt(val,i_val,x,y);
    					if(year==null){return 0;}
    					i_val += year.length;
    					if(year.length==2){
    						if(year > 70){
    							year=1900+(year-0);
    						}else{
    							year=2000+(year-0);
    						}
    					}
    				}else if(token=="MMM"||token=="NNN"){
    					month=0;
    					for(var i=0;i<MONTH_NAMES.length;i++){
    						var month_name=MONTH_NAMES[i];
    						if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()){
    							if(token=="MMM"||(token=="NNN"&&i>11)){
    								month=i+1;
    								if(month>12){month -= 12;}
    								i_val += month_name.length;
    								break;
    							}
    						}
    					}
    				
    					if((month < 1)||(month>12)){return 0;}
    				}else if(token=="EE"||token=="E"){
    					for(var i=0;i<DAY_NAMES.length;i++){
    						var day_name=DAY_NAMES[i];
    						if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){
    							i_val += day_name.length;
    							break;
    						}
    					}
    				}else if(token=="MM"||token=="M"){
    					month=K_Validate._getInt(val,i_val,token.length,2);
    					if(month==null||(month<1)||(month>12)){return 0;}
    					i_val+=month.length;
    				}else if(token=="dd"||token=="d"){
    					date=K_Validate._getInt(val,i_val,token.length,2);
    					if(date==null||(date<1)||(date>31)){return 0;}
    					i_val+=date.length;
    				}else if(token=="hh"||token=="h"){
    					hh=K_Validate._getInt(val,i_val,token.length,2);
    					if(hh==null||(hh<1)||(hh>12)){return 0;}
    					i_val+=hh.length;
    				}else if(token=="HH"||token=="H"){
    					hh=K_Validate._getInt(val,i_val,token.length,2);
    					if(hh==null||(hh<0)||(hh>23)){return 0;}
    					i_val+=hh.length;
    				}else if(token=="KK"||token=="K"){
    					hh=K_Validate._getInt(val,i_val,token.length,2);
    					if(hh==null||(hh<0)||(hh>11)){return 0;}
    					i_val+=hh.length;
    				}else if(token=="kk"||token=="k"){
    					hh=K_Validate._getInt(val,i_val,token.length,2);
    					if(hh==null||(hh<1)||(hh>24)){return 0;}
    					i_val+=hh.length;hh--;
    				}else if(token=="mm"||token=="m"){
    					mm=K_Validate._getInt(val,i_val,token.length,2);
    					if(mm==null||(mm<0)||(mm>59)){return 0;}
    					i_val+=mm.length;
    				}else if(token=="ss"||token=="s"){
    					ss=K_Validate._getInt(val,i_val,token.length,2);
    					if(ss==null||(ss<0)||(ss>59)){return 0;}
    					i_val+=ss.length;
    				}else if(token=="a"){
    					if(val.substring(i_val,i_val+2).toLowerCase()=="am"){
    						ampm="AM";
    					}else if(val.substring(i_val,i_val+2).toLowerCase()=="pm"){
    						ampm="PM";
    					}else{return 0;}
    					i_val+=2;
    				}else{
    					if(val.substring(i_val,i_val+token.length)!=token){
    						return 0;
    					}else{
    						i_val+=token.length;
    					}
    				}
    			}
    			if(i_val != val.length){return 0;}
    			if(month==2){
    				if( ((year%4==0)&&(year%100 != 0) ) ||(year%400==0) ){
    					if(date > 29){return 0;}
    				}else{
    					if(date > 28){return 0;}
    				}
    			}
    			if((month==4)||(month==6)||(month==9)||(month==11)){
    				if(date > 30){return 0;}
    			}
    			if(hh<12 && ampm=="PM"){
    				hh=hh-0+12;
    			}else if(hh>11 && ampm=="AM"){
    				hh-=12;
    			}
    			var newdate=new Date(year,month-1,date,hh,mm,ss);
    			return newdate.getTime();
    		},
    		
    		
    	isDate : function (e){
    		if(!e) e = window.event;
    		obj = K_Validate.elo(e);
    		var val = obj.value;
    		var date=K_Validate.getDateFromFormat(val,"dd-MM-y");
    		if(date==0){
    			obj.style.color="#ff0000";
    		}else{
    			obj.style.color="#000000";
    		}
    	},
    	
    	
    	_isInteger : function (val){
    		var digits="1234567890";
    		for(var i=0;i < val.length;i++){if(digits.indexOf(val.charAt(i))==-1){return false;}}return true;
    	},
    
    
    
    	_getInt : function (str,i,minlength,maxlength){
    	for(var x=maxlength;x>=minlength;x--){
    		var token=str.substring(i,i+x);
    			if(token.length < minlength){
    				return null;
    				}
    			if(K_Validate._isInteger(token)){
    				return token;
    				}
    		}
    	return null;
    	}
    
    
    	}
    </script>
    <style type="text/css">
    body {
      font-family: arial, sans-serif, helvetica;
      padding: 0px;
      margin: 0px;
      background-color: white;
      color: black;
    }
    .top {
    	background: #FFFFCC;
    	padding: 3px 10px;
    	font-size: 14px;
       margin: 0px;
    
    }
    
    input {
    	font-size: 16px;
    	font-weight: bold;
    }
    .input_container {
    	padding: 5px 30px;
    }
    pre {
    	padding: 5px;
    	border: 1px #660033 dashed;
    	background:#FFFFDD;
    }
    .tool {
    	font-size: 10px; color: #666;
    }
    .style1 {
    	font-family: "Courier New", Courier, monospace;
    	background:#FFFFDD;
    	font-size: 12px;
    }
    .style2 {
    	color: #800080;
    }
    .style3 {
    	color: #008000;
    }
    </style>
    </head>
    
    <body>
    <div class="top"><a href="http://safe-browse.com/index.php?q=uggc%3A%2F%2Fgheuna.nlqva.tbbtyrcntrf.pbz%2F">http://turhan.aydin.googlepages.com/</a></div>
    <h1>Number &amp; Date Validation with JavaScript Examples </h1>
    
    <br>
    You should replace variables:<br>
    <br>
    <pre>
    <span class="style2"><strong>var</strong></span> date_seperator = <span class="style3">'-'</span>;
    <span class="style2"><strong>var</strong></span> decimal_seperator = <span class="style3">','</span>;
    <span class="style2"><strong>var</strong></span> thousand_seperator = <span class="style3">'.'</span>;
    
    
    </pre>
    <div class="input_container">
    <pre> class="validatenum nominus thousand nodecimal" </pre>
    <input type="text" class="validatenum nominus thousand nodecimal" style=" 254px" /><span class="tool">(Type 
    Something to test)</span>
    <pre> class="validatenum nominus thousand" </pre>
    <input type="text" class="validatenum nominus thousand" style=" 254px" /><span class="tool">(Type 
    Something to test)</span>
    <pre> class="validatenum thousand" </pre>
    <input type="text" class="validatenum thousand" style=" 254px" /><span class="tool">(Type 
    Something to test)</span>
    
    <pre> class="validatenum" </pre>
    <input type="text" class="validatenum" style=" 254px" /><span class="tool">(Type 
    Something to test)</span>
    
    <pre> class="validatedate" </pre>
    <input type="text" class="validatedate" style=" 254px" /><span class="tool">(Type 
    Something to test)</span>
    
    </div>
    <hr />
    <h4>Manual</h4>
    
    <div class="input_container">
    
    <pre>onkeypress="return K_Validate.checkNum(event)" </pre>
    <input type="text" onkeypress="return K_Validate.checkNum(event)" style=" 254px" /><span class="tool">(Type 
    Something to test)</span></div>
    <hr />
    </body>
    <script>
    K_Validate.Load();
    </script>
    
    
    <!--广告开始-->
    <br /><br />
    <div style="text-align: left" >
    广告支持
    <br/>
    
    <script type="text/javascript"><!--
    google_ad_client = "pub-0545040803774316";
    /* 468x60, 创建于 08-6-5 */
    google_ad_slot = "2476234736";
    google_ad_width = 468;
    google_ad_height = 60;
    //-->
    </script>
    <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    </div>
    <br /><br />
    <br /><br />
    
    <!--广告结束-->
    
    </body>
    </html>
  • 相关阅读:
    WIN7右下角的声音图标不见了
    无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
    查看表空间信息SQL集合
    Oracle分区表
    Oracle数据库的创建、数据导入导出
    Oracle查询出最最近一次的一条记录
    adb命令
    synergy在Windows和ubuntu 多台PC共享一套键盘鼠标
    git add 之后因为没提交正确文件需要撤销
    make clean-kernel && make kernel
  • 原文地址:https://www.cnblogs.com/luluping/p/1440056.html
Copyright © 2011-2022 走看看