`
magicxin
  • 浏览: 17347 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Javascript前台简单验证插件

阅读更多
其实基于Js的验证插件机很多很多,使用起来也非常方便。为了学习Js的目的,在工作中我也自己写了个小验证插件,非常简单。

我觉得验证框架的大体流程是这样的,

(1)收集需要验证的元素(干扰式:直接写在页面表单中,无干扰式:使用Json配置需要验证的元素并在验证框架中分析Json提取需要验证的元素)

(2)选择验证方式(离开输入框即验证、表单提交验证等)

(3)使用验证方法验证(使用正则表达式实现常用的验证方法,要做到可扩展性)

(4)如若验证失败,根据失败信息显示方式,显示失败提示信息。

总的来说就是分成数据收集模块,验证模式模块,验证方法模块,错误显示模块。

下面送上我的第一个基于jquery的验证代码

//easyFormValidate1.0

//easyFormValidateWithJquery.js

//本验证方法基本能满足简单的验证需求,如不能为空,必须是日期,必须是整数,最大值,最小值等

//本验证方法验证模式就一种:手动调用该验证方法

//本验证方法失败信息显示方式也就一种:alert提示信息+页面焦点

//本验证方法是属于干扰式的验证方法,即需要在页面表单元素中增加验证属性。

//formid:传入需要验证的表单的Id或者name,在该表单的元素中需要首先定义要验证元素的验证属性,如

//<form id=testForm>元素A:<input type=text name='field1' value='I won't validate'><br>

//元素B:<input type=text name='field2' rules='fill;minlength(2);'

//msgs='元素B不能为空;元素B的最小长度不能小于2' value='I need validate'></form>

//然后在保存代码中加入if(!validateForm('testForm'))return;

function validateForm(formId){
    var retFlag=true;
    var form = $("#"+formId).size()>0?$("#"+formId):$("form[name="+formId+"]");
    function convertToObj(rules,msgs){
        var ruleArr = rules.split(";");
        var msgArr = msgs.split(";");
        var r={};
        for(var i=0;i<ruleArr.length;i++){
            r[ruleArr[i]]=msgArr[i]==null?"":msgArr[i];
        }
        return r;
    }
    $("*[rule]",form).each(function(){
        var rule = convertToObj($(this).attr("rule"),$(this).attr("message"));
        var methodName;
        var param;
        SimpleValidate.init(rule);
        for(var method in rule){
            if(method==null||method==''||SimpleValidate.rules.methods[method.toLowerCase()]==null)
                continue;
            methodName = method.match(/\w+/)[0];
            param = method.match(/\([\w,]*\)/)==null?"":method.match(/\([\w,]*\)/)[0];
            var ret =SimpleValidate.validate(this,methodName,param);
            if(ret){
                alert(ret);
                retFlag=false;
                $(this).focus();
                return false;
            }
        }
    });
    return retFlag;
};
var SimpleValidate ={
    init:function(rule){
        var methodName = "";
        for(var method in rule){
            if(method==''||this.rules.methods[method.toLowerCase()]==null||rule[method]=='')
            continue;
            methodName = method.match(/\w+/)[0];
            this.messages[methodName]=rule[method];
        }
    },
    validate:function(elmt,rule,param){
        var    result = this.rules.methods[rule.toLowerCase()].call(this,elmt,param);
        if(!result)return this.messages[rule.toLowerCase()];
    },
    messages:{
        "fill":"该输入项不能为空",
        "date":"日期格式错误,必须为形如2001-01-01格式",
        "email":"邮箱格式错误,必须为形如pdcss_gs@163.com格式",
        "integer":"必须是整数值",
        "minlength":"",
        "maxlength":"",
        "rangelength":"",
        "doctype":"不是有效的word类型"
    },
    rules:{
        methods:{
            "fill":function(elmt){
                return /\S/.test(elmt.value);
            },
            "date":function(elmt){
                return /\d{4}-\d{2}-\d{2}/.test(elmt.value);
            },
            "email":function(elmt){
                return /\w+@\w+\.\w+/.test(elmt.value);
            },
            "integer":function(elmt){
                return /^\d+$/.test(elmt.value);
            },
            "minlength":function(elmt,param){
                param = this.rules.parameters(param);
                return this.getLength(elmt.value)>=param[0];
            },
            "maxlength":function(elmt,param){
                param = this.rules.parameters(param);
                return this.getLength(elmt.value)<=param[0];
            },
            "rangelength":function(elmt,param){
                param = this.rules.parameters(param);
                return this.getLength(elmt.value)>=param[0]&&this.getLength(elmt.value)<=param[1];
            },
            "doctype":function(elmt){
                return /.+\.doc$/.test(elmt.value);
            }
        },
        parameters:    function(param){
            var re = /[\(]?(\w*)\s?[,\)]/g;
            var arr="";
            var retArray=[];
            while ((arr = re.exec(param)) != null){
                   retArray.push(arr[1]);
               }
               return retArray;
        }
    },
    getLength:function(val){
        var len = 0;
        var ch;
        if(val==null)
            return len;
        for(var i = 0; i<val.length;i++){
            ch=val.charCodeAt(i);
            if(ch>255)
                len+=2;
            else
                len++;
        }
        return len;
    }
};
1
1
分享到:
评论

相关推荐

    Javascript前台简单验证插件2

    这篇博客文章"Javascript前台简单验证插件2"可能介绍了一种改进版的前端验证解决方案,通过链接可以访问到更多详细内容。 在前端验证中,JavaScript扮演了核心角色,因为它是浏览器内唯一可以实时与用户交互并处理...

    javaScript前台验证实例

    这个"javaScript前台验证实例"的压缩包很可能包含了多种常见的前端验证示例,旨在帮助开发者理解和应用JavaScript进行有效的用户输入检查。 1. **用户名密码验证**: 在网页表单中,用户注册或登录时,通常需要...

    实用javascript验证前台实例

    JavaScript是网页开发中不可或缺的一部分,尤其在前端验证中发挥着至关重要的作用。...在实际应用中,还可以结合HTML5的内置验证功能,以及jQuery、React、Vue等库提供的验证插件,进一步提升验证功能的效率和灵活性。

    rapid_validation_1.5.1网页前台验证jquery插件

    Rapid_Validation_1.5.1是一款专为jQuery设计的前端验证插件,其主要功能是确保用户输入的数据符合预设的规则,从而实现高效、便捷的网页表单验证。 Rapid_Validation_1.5.1的特点在于它的兼容性和实用性。此插件...

    js前台插件集

    "js前台插件集"是指一组用于增强网页用户体验和功能的JavaScript代码库或工具。这些插件可以帮助开发者快速实现各种交互效果、动画、数据处理等功能,大大提升了前端开发效率。 在给定的压缩包文件中,我们可以看到...

    前台日期插件

    除了基本的日期选择外,my97日期插件还提供了许多扩展功能,如日期计算、日期验证、日期比较等。同时,它还支持事件监听,允许开发者在用户选择日期时执行自定义操作。 总的来说,my97日期插件以其强大的功能和易用...

    前台这则验证代码

    "前台这则验证代码"是一个专为前端设计的正则表达式验证插件,它允许开发者轻松地在页面中实现各种数据格式的验证,如邮箱、电话号码、身份证号等。 首先,我们需要了解正则表达式(Regular Expression),它是用来...

    jquery-validate前台验证框架,带详细使用方法

    《jQuery Validate 前台验证框架的详细使用指南》 jQuery Validate 是一款广泛使用的JavaScript库,专门用于在前端进行表单验证。它为HTML表单提供了强大的、易于使用的验证功能,能够有效地提升用户体验,确保用户...

    jquery验证,较强的前台验证

    1. **基本用法**:jQuery的核心并不直接包含验证插件,但可以借助jQuery Validation Plugin来实现。首先,需要在项目中引入jQuery库和Validation Plugin的JS和CSS文件。 2. **表单选择器**:通过`$('form')`选择...

    解决Eclipse保存代码时building workspace因前台代码验证导致的速度慢或卡死问题

    为了解决上述问题,可以通过以下步骤来排除对所有前台JavaScript文件的编译验证,从而提高保存代码时的workspace构建速度: 1. **选中具体项目**: - 打开Eclipse。 - 在“Package Explorer”或“Project ...

    javascript实现常用的表单前台数据的校验

    本篇文章将详细介绍如何使用JavaScript实现常见的表单前台数据校验。 一、基础验证函数 在JavaScript中,我们可以自定义函数来检查用户输入的数据。例如,验证邮箱格式可以使用以下函数: ```javascript function...

    超好用的验证框架 封装js

    【描述】:“很好用的前台验证控制输入的框架 个人写的 不好请见谅!” 描述中提到这是一个“很好用”的前台验证框架,意味着该框架可能具有易用性、高效性和灵活性等特点。它是作者个人编写的,这意味着它可能具有...

    检验前台js的文件

    标题中的“检验前台js的文件”指的是前端JavaScript代码的验证功能。在Web开发中,前端验证是必不可少的一环,它确保用户输入的数据符合预设的规则,如邮箱格式、密码强度、电话号码格式等,从而减少无效数据提交到...

    web聊天插件

    这款小型Web聊天插件是专为初学者设计的,旨在提供一个直观、简单的实例,帮助他们了解如何实现在Web环境中进行实时交互。通过学习和实践这个插件,开发者可以学习到以下关键知识点: 1. **WebSocket协议**:Web...

    关于jquery.validate1.9.0前台验证的使用介绍.docx

    jQuery Validate 是一个强大的前端验证插件,用于在用户提交表单前进行数据验证,确保输入的数据符合预设的规则。版本 1.9.0 是该插件的一个稳定版本,提供了丰富的验证规则和自定义选项。本文将详细介绍如何在实际...

    前台JAVASCRIPT日期控件超级好用实例用过的

    【标题】"前台JAVASCRIPT日期控件超级好用实例用过的"指的是在Web前端开发中使用JavaScript实现的一种高效、实用的日期选择器控件。这种控件通常用于网页表单,允许用户方便地选取日期,提高了用户体验。 【描述】...

    postman 模拟前台请求插件

    4. **预请求脚本和测试脚本**:在发送请求前或接收响应后,你可以编写JavaScript脚本来执行预处理或验证任务。这有助于自动化测试和数据准备。 5. **响应查看和解析**:Postman不仅可以显示完整的HTTP响应,还可以...

    结合SpringMVC和Hibernate-validator,自动生成前台的js验证代码.pdf

    在本文档中,我们将探讨如何结合SpringMVC和Hibernate-validator框架,自动生成前端JavaScript验证代码,从而简化开发过程,提高代码复用性,并确保前后端验证规则的一致性。 首先,我们了解到,虽然Hibernate-...

    web 相关的chm文档,html5+html4+javascript+jquery+php+css2.0+css3.0

    它是浏览器端编程的基础,通过DOM(Document Object Model)操作网页元素,实现动态更新内容、表单验证等功能。而jQuery是一个JavaScript库,简化了JavaScript的使用,提供了丰富的API,让开发者能更高效地实现动画...

Global site tag (gtag.js) - Google Analytics