热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->js 
站内搜索:
一个非常强大完整的web表单验证程序(2)
作者:佚名 来源:闪吧 整理日期:2007-5-1

<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{

[1]  [2]  [3]  
相关文章