<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 onClick="Validator.Validate(document.getElementById(demo))"
value="检验模式1" type="button"><input onClick="Validator.Validate(document.getElementById(demo),2)"
value="检验模式2" type="button"><input onClick="Validator.Validate(document.getElementById(demo),3)"
value="检验模式3" type="button"></td>
</tr>
</form>
</table>
<script>
/*************************************************
Validator v1.0
cody 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{