javascript---文本框自动验证数字和日期
2009-04-20 23:38
387 查看
<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 & 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="width: 254px" /><span class="tool">(Type Something to test)</span> <pre> class="validatenum nominus thousand" </pre> <input type="text" class="validatenum nominus thousand" style="width: 254px" /><span class="tool">(Type Something to test)</span> <pre> class="validatenum thousand" </pre> <input type="text" class="validatenum thousand" style="width: 254px" /><span class="tool">(Type Something to test)</span>
<pre> class="validatenum" </pre> <input type="text" class="validatenum" style="width: 254px" /><span class="tool">(Type Something to test)</span> <pre> class="validatedate" </pre> <input type="text" class="validatedate" style="width: 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="width: 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>
相关文章推荐
- JavaScript表单验证程序(http地址 时间日期 e-mail 数字 字符长度检查等)
- 几个有用的javascript(日期比较,数字验证,数字和汉字长度计算)
- javascript之文本框输入四个数字自动加空格的脚本
- html中常用JavaScript验证表单文本域方法,如日期、字符串、数字等
- html中常用JavaScript验证表单文本域方法,如日期、字符串、数字等
- JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
- Javascript验证和限制文本框只能输入数字或者小数
- 常用正则表达式及JS中验证文本框中文、数字、字母、日期
- javascript之文本框输入四个数字自动加空格的脚本
- javascript验证输入是否为数字
- jQuery+JavaScript+PHP 制作简单的文本框输入自动提示
- JavaScript让登录或搜索文本框自动获得焦点
- 验证 网址,IP,邮箱,电话,手机,数字,英文,日期,身份证,邮编
- 日期格式验证javascript
- JavaScript自动生成li节点 并把文本框的值赋给li.innerHtml
- JavaScript实现在页面上的文本框中输入小写字母自动变为大写字母
- 两行代码搞定 JavaScript 的日期验证
- 用JavaScript验证日期格式
- JavaScript日期、邮箱验证和隐藏控件(初级)
- JavaScript对表格或元素按文本,数字或日期排序的方法