发布于 2016-08-21 10:25:27 | 122 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的jQuery示例,程序狗速度看过来!

jQuery javascript框架

jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。



ASP.NET提供了丰富的数据验证控件,但这个验证功能都必须运用在服务器控件中;在复合验证数据时使用也不是很方便(虽然拖放控件很方便,但拖放数增多和设置相关属性就变得很麻烦的事情)。为了更方便灵活地实现验证功能,于是采用了JQuery编写了一个简单验证组件,在使用时只需要简单的描述一下验证规则,并不需要写一句JavaScript就可以实现具备ASP.NET验证控件的功能(当然页面要引入相关JavaScript文件)。
功能目标
       通过简单的自定义属性值描述具体的验证功能,当Form提交自动拦载执行验证功能。如果所有成员验证成功就提交,否则取消提交。
       简单使用描述: 
       

<input id="Text1" type="text" validator="type:string;nonnull:true;tip:请输入用户名!;tipcontrol:nametip" />  
       <input id="Text2" type="text" validator="type:date;nonnull:true;tip:请输入正确的出生日期!;tipcontrol:birthtip;min:1950-1-1;max:2000-1-1" /> 

实现要点
       利用JQuery提供的素元查找功能,方便查找出需要验证的元素对象;通过$(document).ready事件进很验证代码的初始化和执行的切入工作。
       定义验证规则描述属性,在初始化时对相关验证描述进行分解和集成处理。
       拦载Form提交过程进行验证处理,根据情况确定是否提交数据。
       元素对象在发生onchange事件时自动执行验证处理功能。
       通过alert和自定义区域显示错误信息。
具体JavaScript代码
       实现代码并不复杂只有几百行,由于相关代码比较简单所以没有编写注解.
具体代码:

// JScript 文件  
//<validator>  
//type:int|number|date|string  
//nonnull:true|false  
//regex:^[-\+]?\d+$  
//min:0  
//max:999999999  
//campare:id  
//comparetype:eq,neq,leq,req,le,ri  
//tipcontrol:  
//tip:  
//</validator>  
var ErrorMessage;  
function FormValidate(form)  
{  
    ErrorMessage='';  
    var legality,items;  
    legality = true;  
    items = $(form).find("input[@validator]");  
    for(var i =0;i< items.length;i++)  
    {  
       if(legality)  
       {  
            legality = OnItemValidator($(items[i]));  
       }  
       else  
       {  
            OnItemValidator($(items[i]));      
       }  
    }  
    items = $(form).find("textarea[@validator]");  
    for(var i =0;i< items.length;i++)  
    {  
       if(legality)  
       {  
            legality = OnItemValidator($(items[i]));  
       }  
       else  
       {  
            OnItemValidator($(items[i]));      
       }  
    }  
    items = $(form).find("select[@validator]");  
    for(var i =0;i< items.length;i++)  
    {  
       if(legality)  
       {  
            legality = OnItemValidator($(items[i]));  
       }  
       else  
       {  
            OnItemValidator($(items[i]));      
       }  
    }  
    if(!legality)  
    {  
        if(ErrorMessage !='')  
            alert(ErrorMessage);  
    }  
    return legality;  
}  
function CreateValObject(validator)  
{  
    var valobj = {  type:'string',  
                    nonnull:false,  
                    regex:null,  
                    min:null,  
                    max:null,  
                    campare:null,  
                    comparetype:null,  
                    tipcontrol:null,  
                    tip:null};  
    var properties;  
    var execute;  
    var namevalue;  
    properties = validator.split(';');  
    for(i=0;i<properties.length;i++)  
    {  
        namevalue = properties[i].split(':');  
        execute ="valobj." + namevalue[0] +'=\''+ namevalue[1]+'\';';  
        eval(execute);  
    }  
    return valobj;  
}  
function OnItemValidator(control)  
{  
    var regex,maxvalue,minvalue,cvalue;  
    var valobj = CreateValObject(control.attr('validator'));  
    var value = control.val();  
    value = ValidatorConvert(value,valobj.type);  
    if(valobj.nonnull=="true")  
    {  
        if(value == null || value=="")  
        {  
            ValidatorError(valobj);  
            return false;  
        }  
    }  
    else  
    {  
        if(value == null || value=="")  
            return true;  
    }  
    if(valobj.regex != null)  
    {  
        regex =new RegExp(valobj.regex);  
        if(value.match(regex) == null)  
        {  
            ValidatorError(valobj);  
            return false;  
        }  
    }  
    if(valobj.min != null)  
    {  
        minvalue = ValidatorConvert(valobj.min,valobj.type);  
        if(!CompareValue(value,minvalue,"req"))  
        {  
            ValidatorError(valobj);  
            return false;  
        }  
    }  
    if(valobj.max != null)  
    {  
        maxvalue = ValidatorConvert(valobj.max,valobj.type);  
        if(!CompareValue(value,maxvalue,"leq"))  
        {  
            ValidatorError(valobj);  
            return false;  
        }  
    }  
    if(valobj.campare != null)  
    {  
        cvalue = $('#' + valobj.campare).val();  
        cvalue = ValidatorConvert(cvalue,valobj.type);  
        if(!CompareValue(value,cvalue,valobj.comparetype))  
        {  
            ValidatorError(valobj);  
            return false;  
        }  
    }  
    return true;  
}  
function ValidatorError(valobj)  
{  
    if(valobj.tipcontrol != null)  
        showTip($("#"+ valobj.tipcontrol));  
    else  
    {  
        if(ErrorMessage !='')  
            ErrorMessage += '\n';  
        ErrorMessage += valobj.tip;  
    }  
}  
function CompareValue(leftvalue,rightvalue,compareType)  
{  
    if(leftvalue == null || rightvalue == null)  
        return false;  
    if(compareType=="eq")  
    {  
        return leftvalue == rightvalue;  
    }  
    else if(compareType =="neq")  
    {  
        return leftvalue != rightvalue;  
    }  
    else if(compareType =="le")  
    {  
        return leftvalue < rightvalue;  
    }  
    else if(compareType =="leq")  
    {  
        return leftvalue <= rightvalue;  
    }  
    else if(compareType =="ri")  
    {  
        return leftvalue > rightvalue;  
    }  
    else if(compareType =="req")  
    {  
        return leftvalue >= rightvalue;  
    }  
    else  
    {  
        return false;  
    }  
}  
function showTip(control)  
{  
    if(control.attr('show') != 'on')  
    {  
        control.fadeIn("slow");  
        control.attr('show','on');  
    }  
}  
function hideTip(control)  
{  
    control.hide();  
    control.attr('show','');  
}  
function ValidatorConvert(value, dataType) {  
    var num,exp,m;  
    var year,month,day  
    if(value == null || value =="")  
        return null;  
    if(dataType=="int")  
    {  
        exp=/^[-\+]?\d+$/;  
        if (value.match(exp) == null)  
            return null;  
        num = parseInt(value, 10);  
        return (isNaN(num) ? null : num);  
    }  
    else if(dataType =="number")  
    {  
        exp=/^[-\+]?((\d+)|(\d+\.\d+))$/;  
        if (value.match(exp) == null)  
            return null;  
        num = parseFloat(value);  
        return (isNaN(num) ? null : num);  
    }  
    else if(dataType =="date")  
    {  
        exp=/^(\d{4})([-/]?)(\d{1,2})([-/]?)(\d{1,2})$/  
        m = value.match(exp);  
        if (m == null)  
        {  
            exp=/^(\d{1,2})([-/]?)(\d{1,2})([-/]?)(\d{4})$/  
            m = value.match(exp);  
            if(m== null)  
                return null;  
            year = m[5];  
            month = m[1];  
            day =m[3];  
        }  
        else  
        {  
            year = m[1];  
            month =m[3];  
            day = m[5];  
        }  
        try  
        {  
            num = new Date(year,month,day);  
        }  
        catch(e)  
        {  
            return null;  
        }  
        return num;  
    }  
    else  
    {  
        return value.toString();  
    }  
}  
$(document).ready(  
    function(){  
        $("[@validator]").each(function(i)  
                    {  
                        var valobj = CreateValObject($(this).attr('validator'));  
                        if(valobj.tipcontrol !=null)  
                        {  
                            $('#' + valobj.tipcontrol).addClass('ErrorTip');  
                            hideTip($('#' + valobj.tipcontrol));  
                            $("#"+ valobj.tipcontrol).html("<NOBR>"+valobj.tip+"</NOBR>");  
                        }  
                        $(this).change(function(){  
                           if(OnItemValidator($(this)))  
                           {  
                                if(valobj.tipcontrol !=null)  
                                {  
                                   hideTip($('#' + valobj.tipcontrol));    
                                }  
                           }  
                           else  
                           {  
                                if(valobj.tipcontrol !=null)  
                                {  
                                   showTip($('#' + valobj.tipcontrol));    
                                }  
                           }  
                        });  
                     }  
                );  
          $("form").each(function(id)  
            {  
                $(this).submit(function(){return FormValidate(this)});  
            }  
            );  
    }  
); 

下载相关例程代码

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务