| 管理员 
     | 
						
2#
大中
小发表于 2008-4-27 19:34 								只看该作者 
七、强大的表单验证
 <title>表单验证类 Validator v1.01</title>
 
 <style>
 
 body,td{font:normal 12px Verdana;color:#333333}
 
 input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background:#ffffff}
 
 table{border-collapse:collapse;}
 
 td{padding:3px}
 
 input{height:20;}
 
 textarea{width:80%;height:50px;overfmin:auto;}
 
 form{display:inline}
 
 </style>
 
 <table align="center">
 
 <form name="theForm" id="demo" action="" method="get" onSubmit="return Validator.Validate(this,2)">
 
 <tr>
 
 <td>真实姓名:</td><td><input name="Name" dataType="Chinese" msg="真实姓名只允许中文"></td>
 
 </tr>
 
 <tr>
 
 <td>英文名:</td><td><input name="Nick" dataType="English" require="false" msg="英文名只允许英文字母"></td>
 
 </tr>
 
 <tr>
 
 <td>主页:</td><td><input name="Homepage" require="false" dataType="Url"   msg="非法的Url"></td>
 
 </tr>
 
 <tr>
 
 <td>密码:</td><td><input name="Password" dataType="SafeString"   msg="密码不符合安全规则" type="password"></td>
 
 </tr>
 
 <tr>
 
 <td>重复:</td><td><input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password"></td>
 
 </tr>
 
 <tr>
 
 <td>信箱:</td><td><input name="Email" dataType="Email" msg="信箱格式不正确"></td>
 
 </tr>
 
 <tr>
 
 <td>信箱:</td><td><input name="Email" dataType="Repeat" to="Email" msg="两次输入的信箱不一致"></td>
 
 </tr>
 
 <tr>
 
 <td>QQ:</td><td><input name="QQ" require="false" dataType="QQ" msg="QQ号码不存在"></td>
 
 </tr>
 
 <tr>
 
 <td>身份证:</td><td><input name="Card" dataType="IdCard" msg="身份证号码不正确"></td>
 
 </tr>
 
 <tr>
 
 <td>年龄:</td><td><input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28"></td>
 
 </tr>
 
 <tr>
 
 <td>年龄1:</td><td><input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual"></td>
 
 </tr>
 
 <tr>
 
 <td>电话:</td><td><input name="Phone" require="false" dataType="Phone" msg="电话号码不正确"></td>
 
 </tr>
 
 <tr>
 
 <td>手机:</td><td><input name="Mobile" require="false" dataType="Mobile" msg="手机号码不正确"></td>
 
 </tr>
 
 <tr>
 
 <td>生日:</td><td><input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在"></td>
 
 </tr>
 
 <tr>
 
 <td>邮政编码:</td><td><input name="Zip" dataType="Custom" regexp="^[1-9]\d{5}$" msg="邮政编码不存在"></td>
 
 </tr>
 
 <tr>
 
 <td>邮政编码:</td><td><input name="Zip1" dataType="Zip" msg="邮政编码不存在"></td>
 
 </tr>
 
 <tr>
 
 <td>操作系统:</td><td><select name="Operation" dataType="Require"  msg="未选择所用操作系统" ><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>
 
 </tr>
 
 <tr>
 
 <td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio" dataType="Group"  msg="必须选定一个省份" ></td>
 
 </tr>
 
 <tr>
 
 <td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3"  msg="必须选择2~3种爱好"></td>
 
 </tr>
 
 <td>自我介绍:</td><td><textarea name="Description" dataType="Limit" max="10"  msg="自我介绍内容必须在10个字之内">中文是一个字</textarea></td>
 
 </tr>
 
 <td>自传:</td><td><textarea name="History" dataType="LimitB" min="3" max="10"  msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td>
 
 </tr>
 
 <tr>
 
 <td colspan="2"><input name="Submit" type="submit" value="确定提交"><input  value="检验模式1" type="button"><input  value="检验模式2" type="button"><input  value="检验模式3" type="button"></td>
 
 </tr>
 
 </form>
 
 </table>
 
 <script>
 
 /*************************************************
 
 Validator v1.01
 
 code by 我佛山人
 
 wfsr@cunite.com
 
 http://www.cunite.com
 
 *************************************************/
 
 Validator = {
 
 Require : /.+/,
 
 Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
 
 Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
 
 Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
 
 Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
 
 IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,
 
 Currency : /^\d+(\.\d+)?$/,
 
 Number : /^\d+$/,
 
 Zip : /^[1-9]\d{5}$/,
 
 QQ : /^[1-9]\d{4,8}$/,
 
 Integer : /^[-\+]?\d+$/,
 
 Double : /^[-\+]?\d+(\.\d+)?$/,
 
 English : /^[A-Za-z]+$/,
 
 Chinese :  /^[\u0391-\uFFE5]+$/,
 
 UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
 
 IsSafe : function(str){return !this.UnSafe.test(str);},
 
 SafeString : "this.IsSafe(value)",
 
 Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",
 
 LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
 
 Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
 
 Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",
 
 Range : "getAttribute('min') < value && value < getAttribute('max')",
 
 Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
 
 Custom : "this.Exec(value, getAttribute('regexp'))",
 
 Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",
 
 ErrorItem : [document.forms[0]],
 
 ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],
 
 Validate : function(theForm, mode){
 
 var obj = theForm || event.srcElement;
 
 var count = obj.elements.length;
 
 this.ErrorMessage.length = 1;
 
 this.ErrorItem.length = 1;
 
 this.ErrorItem[0] = obj;
 
 for(var i=0;i<count;i++){
 
 with(obj.elements[i]){
 
 var _dataType = getAttribute("dataType");
 
 if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
 
 this.ClearState(obj.elements[i]);
 
 if(getAttribute("require") == "false" && value == "") continue;
 
 switch(_dataType){
 
 case "Date" :
 
 case "Repeat" :
 
 case "Range" :
 
 case "Compare" :
 
 case "Custom" :
 
 case "Group" :
 
 case "Limit" :
 
 case "LimitB" :
 
 case "SafeString" :
 
 if(!eval(this[_dataType]))      {
 
 this.AddError(i, getAttribute("msg"));
 
 }
 
 break;
 
 default :
 
 if(!this[_dataType].test(value)){
 
 this.AddError(i, getAttribute("msg"));
 
 }
 
 break;
 
 }
 
 }
 
 }
 
 if(this.ErrorMessage.length > 1){
 
 mode = mode || 1;
 
 var errCount = this.ErrorItem.length;
 
 switch(mode){
 
 case 2 :
 
 for(var i=1;i<errCount;i++)
 
 this.ErrorItem[i].style.color = "red";
 
 case 1 :
 
 alert(this.ErrorMessage.join("\n"));
 
 this.ErrorItem[1].focus();
 
 break;
 
 case 3 :
 
 for(var i=1;i<errCount;i++){
 
 try{
 
 var span = document.createElement("SPAN");
 
 span.id = "__ErrorMessagePanel";
 
 span.style.color = "red";
 
 this.ErrorItem[i].parentNode.appendChild(span);
 
 span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");
 
 }
 
 catch(e){alert(e.description);}
 
 }
 
 this.ErrorItem[1].focus();
 
 break;
 
 default :
 
 alert(this.ErrorMessage.join("\n"));
 
 break;
 
 }
 
 return false;
 
 }
 
 return true;
 
 },
 
 limit : function(len,min, max){
 
 min = min || 0;
 
 max = max || Number.MAX_VALUE;
 
 return min <= len && len <= max;
 
 },
 
 LenB : function(str){
 
 return str.replace(/[^\x00-\xff]/g,"**").length;
 
 },
 
 ClearState : function(elem){
 
 with(elem){
 
 if(style.color == "red")
 
 style.color = "";
 
 var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
 
 if(lastNode.id == "__ErrorMessagePanel")
 
 parentNode.removeChild(lastNode);
 
 }
 
 },
 
 AddError : function(index, str){
 
 this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
 
 this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
 
 },
 
 Exec : function(op, reg){
 
 return new RegExp(reg,"g").test(op);
 
 },
 
 compare : function(op1,operator,op2){
 
 switch (operator) {
 
 case "NotEqual":
 
 return (op1 != op2);
 
 case "GreaterThan":
 
 return (op1 > op2);
 
 case "GreaterThanEqual":
 
 return (op1 >= op2);
 
 case "LessThan":
 
 return (op1 < op2);
 
 case "LessThanEqual":
 
 return (op1 <= op2);
 
 default:
 
 return (op1 == op2);
 
 }
 
 },
 
 MustChecked : function(name, min, max){
 
 var groups = document.getElementsByName(name);
 
 var hasChecked = 0;
 
 min = min || 1;
 
 max = max || groups.length;
 
 for(var i=groups.length-1;i>=0;i--)
 
 if(groups[i].checked) hasChecked++;
 
 return min <= hasChecked && hasChecked <= max;
 
 },
 
 IsDate : function(op, formatString){
 
 formatString = formatString || "ymd";
 
 var m, year, month, day;
 
 switch(formatString){
 
 case "ymd" :
 
 m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
 
 if(m == null ) return false;
 
 day = m[6];
 
 month = m[5]--;
 
 year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
 
 break;
 
 case "dmy" :
 
 m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
 
 if(m == null ) return false;
 
 day = m[1];
 
 month = m[3]--;
 
 year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
 
 break;
 
 default :
 
 break;
 
 }
 
 if(!parseInt(month)) return false;
 
 month = month==12 ?0:month;
 
 var date = new Date(year, month, day);
 
 return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());
 
 function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
 
 }
 
 }
 
 </script>
 
 八、漂亮的脚本日历
 
 <Script LANGUAGE="JavaScript">
 
 var months = new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二");
 
 var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31);
 
 var days = new Array("日","一", "二", "三","四", "五", "六");
 
 var classTemp;
 
 var today=new getToday();
 
 var year=today.year;
 
 var month=today.month;
 
 var newCal;
 
 
 
 function getDays(month, year) {
 
 if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) ||(0 == year % 400) ? 29 : 28;
 
 else return daysInMonth[month];
 
 }
 
 
 
 function getToday() {
 
 this.now = new Date();
 
 this.year = this.now.getFullYear();
 
 this.month = this.now.getMonth();
 
 this.day = this.now.getDate();
 
 }
 
 
 
 function Calendar() {
 
 newCal = new Date(year,month,1);
 
 today = new getToday();
 
 var day = -1;
 
 var startDay = newCal.getDay();
 
 var endDay=getDays(newCal.getMonth(), newCal.getFullYear());
 
 var daily = 0;
 
 if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth()))
 
 {
 
 day = today.day;
 
 }
 
 var caltable = document.all.caltable.tBodies.calendar;
 
 var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
 
 
 
 for (var intWeek = 0; intWeek < caltable.rows.length;intWeek++)
 
 for (var intDay = 0;intDay < caltable.rows[intWeek].cells.length;intDay++)
 
 {
 
 var cell = caltable.rows[intWeek].cells[intDay];
 
 var montemp=(newCal.getMonth()+1)<10?("0"+(newCal.getMonth()+1)):(newCal.getMonth()+1);
 
 if ((intDay == startDay) && (0 == daily)){ daily = 1;}
 
 var daytemp=daily<10?("0"+daily):(daily);
 
 var d="<"+newCal.getFullYear()+"-"+montemp+"-"+daytemp+">";
 
 if(day==daily) cell.className="DayNow";
 
 else if(intDay==6) cell.className = "DaySat";
 
 else if (intDay==0) cell.className ="DaySun";
 
 else cell.className="Day";
 
 if ((daily > 0) && (daily <= intDaysInMonth))
 
 {
 
 cell.innerText = daily;
 
 daily++;
 
 } else
 
 {
 
 cell.className="CalendarTD";
 
 cell.innerText = "";
 
 }
 
 }
 
 document.all.year.value=year;
 
 document.all.month.value=month+1;
 
 }
 
 
 
 function subMonth()
 
 {
 
 if ((month-1)<0)
 
 {
 
 month=11;
 
 year=year-1;
 
 } else
 
 {
 
 month=month-1;
 
 }
 
 Calendar();
 
 }
 
 
 
 function addMonth()
 
 {
 
 if((month+1)>11)
 
 {
 
 month=0;
 
 year=year+1;
 
 } else
 
 {
 
 month=month+1;
 
 }
 
 Calendar();
 
 }
 
 
 
 function setDate()
 
 {
 
 if (document.all.month.value<1||document.all.month.value>12)
 
 {
 
 alert("月的有效范围在1-12之间!");
 
 return;
 
 }
 
 year=Math.ceil(document.all.year.value);
 
 month=Math.ceil(document.all.month.value-1);
 
 Calendar();
 
 }
 
 </Script>
 
 
 
 <Script>
 
 function buttonOver()
 
 {
 
 var obj = window.event.srcElement;
 
 obj.runtimeStyle.cssText = "background-color:#FFFFFF";
 
 // obj.className="Hover";
 
 }
 
 
 
 function buttonOut()
 
 {
 
 var obj = window.event.srcElement;
 
 window.setTimeout(function(){obj.runtimeStyle.cssText = "";},300);
 
 }
 
 </Script>
 
 
 
 <Style>
 
 Input {font-family: verdana;font-size: 9pt;text-decoration: none;background-color: #FFFFFF;height: 20px;border: 1px solid #666666;color:#000000;}
 
 
 
 .Calendar {font-family: verdana;text-decoration: none;width: 170;background-color: #C0D0E8;font-size: 9pt;border:0px dotted #1C6FA5;}
 
 .CalendarTD {font-family: verdana;font-size: 7pt;color: #000000;background-color:#f6f6f6;height: 20px;width:11%;text-align: center;}
 
 
 
 .Title {font-family: verdana;font-size: 11pt;font-weight: normal;height: 24px;text-align: center;color: #333333;text-decoration: none;background-color: #A4B9D7;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-bottom-style:1px;border-top-color: #999999;border-right-color: #999999;border-bottom-color: #999999;border-left-color: #999999;}
 
 
 
 .Day {font-family: verdana;font-size: 7pt;color:#243F65;background-color: #E5E9F2;height: 20px;width:11%;text-align: center;}
 
 .DaySat {font-family: verdana;font-size: 7pt;color:#FF0000;text-decoration: none;background-color:#E5E9F2;text-align: center;height: 18px;width: 12%;}
 
 .DaySun {font-family: verdana;font-size: 7pt;color: #FF0000;text-decoration: none;background-color:#E5E9F2;text-align: center;height: 18px;width: 12%;}
 
 .DayNow {font-family: verdana;font-size: 7pt;font-weight: bold;color: #000000;background-color: #FFFFFF;height: 20px;text-align: center;}
 
 
 
 .DayTitle {font-family: verdana;font-size: 9pt;color: #000000;background-color: #C0D0E8;height: 20px;width:11%;text-align: center;}
 
 .DaySatTitle {font-family: verdana;font-size: 9pt;color:#FF0000;text-decoration: none;background-color:#C0D0E8;text-align: center;height: 20px;width: 12%;}
 
 .DaySunTitle {font-family: verdana;font-size: 9pt;color: #FF0000;text-decoration: none;background-color: #C0D0E8;text-align: center;height: 20px;width: 12%;}
 
 
 
 .DayButton {font-family: Webdings;font-size: 9pt;font-weight: bold;color: #243F65;cursor:hand;text-decoration: none;}
 
 
 
 </Style>
 
 
 
 
 
 <table border="0" cellpadding="0" cellspacing="1" class="Calendar" id="caltable">
 
 <thead>
 
 <tr align="center" valign="middle">
 
 <td colspan="7" class="Title">
 
 <a href="javaScript:subMonth();" title="上一月" Class="DayButton">3</a> <input name="year" type="text" size="4" maxlength="4" onkeydown="if (event.keyCode==13){setDate()}" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')"  onpaste="this.value=this.value.replace(/[^0-9]/g,'')"> 年 <input name="month" type="text" size="1" maxlength="2" onkeydown="if (event.keyCode==13){setDate()}" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')"  onpaste="this.value=this.value.replace(/[^0-9]/g,'')"> 月 <a href="JavaScript:addMonth();" title="下一月" Class="DayButton">4</a>
 
 </td>
 
 </tr>
 
 <tr align="center" valign="middle">
 
 <Script LANGUAGE="JavaScript">
 
 document.write("<TD class=DaySunTitle id=diary >" + days[0] + "</TD>");
 
 for (var intLoop = 1; intLoop < days.length-1;intLoop++)
 
 document.write("<TD class=DayTitle id=diary>" + days[intLoop] + "</TD>");
 
 document.write("<TD class=DaySatTitle id=diary>" + days[intLoop] + "</TD>");
 
 </Script>
 
 </TR>
 
 </thead>
 
 <TBODY border=1 cellspacing="0" cellpadding="0" ID="calendar" ALIGN=CENTER ONCLICK="getDiary()">
 
 <Script LANGUAGE="JavaScript">
 
 for (var intWeeks = 0; intWeeks < 6; intWeeks++)
 
 {
 
 document.write("<TR style='cursor:hand'>");
 
 for (var intDays = 0; intDays < days.length;intDays++) document.write("<TD class=CalendarTD onMouseover='buttonOver();' onMouseOut='buttonOut();'></TD>");
 
 document.write("</TR>");
 
 }
 
 </Script>
 
 </TBODY>
 
 </TABLE>
 
 <Script  LANGUAGE="JavaScript">
 
 Calendar();
 
 </Script>
 
 
 
 
								换个头像,看见广告就眼红,直接封ID。							 |