js表单验证框架
Validator = {
Require : /.+/, //<select name="Operation" dataType="Require" msg="未选择"><option value="">……
Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,//信箱格式
Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,//电话
Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,//手机
Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
IdCard : "this.IsIdCard(value)",//身份证号
Currency : /^\d+(\.\d+)?$/,
Number : /^\d+$/,
Zip : /^[1-9]\d{5}$/,//邮编<input name="Zip" dataType="Custom" regexp="^[1-9]\d{5}$" msg="邮政编码不存在">
QQ : /^[1-9]\d{4,8}$/,//QQ
Integer : /^[-\+]?\d+$/,
Double : /^[-\+]?\d+(\.\d+)?$/,
English : /^[A-Za-z]+$/,//只允许英文字母
Chinese : /^[\u0391-\uFFE5]+$/,//只允许中文
Username : /^[a-z]\w{3,}$/i,//变量命名规则
UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
IsSafe : function(str){return !this.UnSafe.test(str);},
SafeString : "this.IsSafe(value)",//密码
Filter : "this.DoFilter(value, getAttribute('accept'))",//<input name="up" dataType="Filter" msg="非法的文件格式" type="file" accept="jpg, gif, png">
Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))",//<textarea name="Description" dataType="Limit" max="10" msg="必须在10个字之内">中文是一个字</textarea>
LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",//<textarea name="History" dataType="LimitB" min="3" max="10" msg="必须在[3,10]个字节之内">中文是两个字节t</textarea>
Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",//<input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在">
Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",//验证2次输入是否一至<input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password">
Range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')",//<input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28">
Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",//<input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual">
Custom : "this.Exec(value, getAttribute('regexp'))",
Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",//<input name="Province" value="4" type="radio" dataType="Group" msg="必须选定一个">单选框 <input name="Favorite" value="4" type="checkbox" " dataType="Group" min="2" max="3" msg="必须选择2~3种">复选框
ErrorItem : [document.forms[0]],
ErrorMessage : ["error:"],
Validate : function(theForm, mode){
var obj = document.forms[0] || 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]){
&n