Javascript 验证表单插件

2016-02-20 01:03 3 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐Javascript 验证表单插件,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - Web开发 】

     此前,我曾经写过一个基于JQuery的表单校验 validator.js ,用了一段时间发现出现了一些问题。与大家互相探讨一下。

version: alpha 1.0
举其中一个验证函数为例:
......
function CheckNull(obj, objname){
    $(obj).ready( function(){
            if (!$(obj).next().is("span")) $(obj).after(" 必填"); } );
    $(obj).focus( function(){
            $(this).next("span").html(objname+"必填");
            $(this).next("span").removeClass();
            $(this).next("span").addClass("onFocus");
    });
    $(obj).blur(function(){
            if($.trim($(this).val()) != ""){
                $(this).next("span").html("已填");
                $(this).next("span").removeClass();
                $(this).next("span").addClass("onSuccess");
            }else{
                $(this).next("span").html(objname+"必填");
                $(this).next("span").removeClass();
                $(this).next("span").addClass("onError");
        }
    });
 }
......

    设计这个验证插件的思路是让团队中不太懂JAVASCRIPT的美工人员也可以编写简单的表单验证程序。

    主要原理是,对参数中 obj 的三种状态进行处理。
$(obj).ready      当obj加载结束时,自动插入span作为提示容器。
$(obj).focus      当obj获得焦点时,提示该字段的输入规则。
$(obj).blur        当obj失去焦点时,校验字段的合法性。
script
        $(document).ready(function(){           //页面加载后
                CheckNull(account,"用户名");       //校验用户名不为空
        });
    
        $("submit").click(function(){
                chkfrm(document.form1);           //id="submit"按钮添加click事件
        });

        function chkfrm(obj){                        //检查表单各项
                $("input:text,input:password,select,",obj).each(function(){
                        $(this).blur();
                });
                if ($(".onError:first")==null)
                        obj.submit();                   //没有错误就提交表单
                else
                        $(".onError:first").prev().focus();  //第一个出错项获得焦点
        }
/script

    这个插件虽然在一段时间里满足了实际需要,但是在持续的使用中,我发现存在以下几个问题:

布局不灵活,在 input 后添加提示语句,如果input都是单行的,那没有问题,但如果是一行当中有多个input 这个插件的提示效果就很糟糕了。 校验触发方式存在缺陷,$(this).blur();触发校验并不保险,例如表单有默认值无需填写,用户不触发blur事件前,得不到正确提示。 可靠性不强,通过 $(".onError:first")来进行校验,而不是通过CheckNull()的返回值进行判断,当用户有自定义CSS或禁止CSS时会出现麻烦。 结构过渡紧密,把呈现与逻辑关系绑在一起,失去了调整的空间。     针对这些问题,我在新版本中采取了完全不同的思路,并且脱离了jQuery,虽然jQuery非常好用,但是如此简单的校验插件,加载jQuery也只是为了在取元素的过程中简便一点,考虑jQuery本身的体积,有点得不偿失,用原生的javascript就足够简便了。另外,我把逻辑与呈现彻底分开,让CheckNull就只是完成校验字段是否为空,而不控制错误信息的呈现。

version:alpha 2.0
还是同一个函数
.......
function CheckNull(obj, objname)
{
    var flag = false;
    if (obj.value == null || obj.value == "")
            flag = false;
    else
            flag = true;
    if(!flag)                                     //统一的处理方式
            tips(obj);                          //flag=false 显示错误提示信息
    else
            clear(obj);                        //flag=true  清除错误提示信息
    return flag;
}
.......


function chkfrm(obj){
    with(obj){
        var arr = new Array(                    //把所有校验的返回值存入数组
                CheckNull(name, "用户名"),
                CheckNull(addr,  "地址"),
                CheckNull(tel,    "联系电话"),
        );
        if (arr.join("").indexOf("false")0)    //通过join把数组链接成字符串
           submit();                                //如果返回值中没有false,提交表单
    }
}

     虽然结构以及程序都非常简单直白,但是把错误呈现都归纳到 tips()中去了,那就可以在维持逻辑关系不变的情况下,只调整 tips()一个函数去控制不同的呈现方式,这样设计师就可以有多种的选择,最大限度的保持了插件的灵活性。在后续的版本中还会加入 CheckNull(obj,objname,type) 这样的调用方式,在tips()内置几种不同的样式,通过tips(obj,type)来控制选择提示信息的样式。实现同一张表单不同的表单项有不同形式的提示信息。

现在火速提供 alpha 2.0版本下载,希望抛砖引玉,让这个插件能越来越好。

================ validator.js  version:alpha2.0 ================

目前以支持如下函数:

字符串长度校验:    CheckSLen(obj, objname, min_len, max_len);

字符串空校验:       CheckNull(obj, objname);

字符串相等校验:    CheckEqual(obj1, obj2, obj1name, obj2name);

数字范围校验:       CheckNumRange(obj, objname, min_value, max_value);

Email格式校验:      CheckEmail(obj, objname);

身份证格式校验:    CheckId(obj, objname);

正则表达式校验:    CheckExpression(obj, objname, expression);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

========================================================

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

来源:http://www.tulaoshi.com/n/20160220/1633134.html

延伸阅读
标签: Web开发
可爱吧--教你做可爱女人--化妆 美容 美化 瘦身 护肤--深圳可爱吧 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: Web开发
打包下载   代码如下: /* Jquery 表单验证插件 janchie 2010.1 janchie@163.com 1.01版 */ (function($){ $.fn.extend({ valid:function(){ if( ! $(this).is("form") ) return; //获取参数 var items = $.isArray(arguments[0]) ? arguments[0] : [], isBindSubmit = typeof arguments[1] ==="boolean" ? arguments[1] :...
标签: Web开发
messages_cn.js !--验证国际化,中文-- (不引用messages_cn.js是英文的提示,用了是中文) 代码如下: required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a va...
本文将分享10个超酷的jQuery/JavaScript表单插件,帮助你有效的增强你的表单元素,相信这些插件可以让你的网站或者应用拥有更加友好的界面和用户体验。 1. Chosen 一个JavaScript插件,帮助你将比较宽的选择框变得更加友好,支持jQuery和Prototype。   2. Password Strength 帮助你校验你的密码强度,非常实用的密码强度...
不管是动态网站,还是其它B/S结构的系统,都离不开表单 表单做为客户端向服务器提交数据的载体担当相当重要的角色. 这就引出了一个问题,提交的数据合法吗?摆在我们面前的问题就是验证这些数据 保证所提交的数据是合法的.所以,我们写了一个大堆的验证函数.当我们开始新的一个 项目的开发时,我们又得写一大堆的验证函数,然后再调试这一大堆的函数.....

经验教程

576

收藏

85

精华推荐

jQuery formValidator表单验证插件开源了 含API帮助、

jQuery formValidator表单验证插件开源了 含API帮助、

微信zhw891209

ajax制作表单验证示例

ajax制作表单验证示例

小七七七七七5

超级强大的表单验证

超级强大的表单验证

zhangjinglwt

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部