jQuery 表单验证扩展(四)

周末写的 jQuery 表单验证扩展(三)  这篇文章点击率过低,不知道是文章太失水准还是什么其他原因,这里写文章只是为了分享一下自己写代码的心得,同时也是巩固自己所学的东西!如果文章中存在问题,请大家多多斧正!本篇文章介绍jQuery 表单验证扩展中的控件值的比较

文章回顾:

jQuery 表单验证扩展(三)

jQuery 表单验证扩展(二)

jQuery 表单验证扩展(一)  

 

(一). 存在的问题

这篇文章和第一篇中提到的控件值之间的比较没有多大的区别,唯一更近的就是在样式的处理。同时就是对代码进行了简化。但是这里还是单独拿出来讲解一下,此文非常简单,所以不会有大篇幅的讲解。 

 

(二). 参数介绍

onFocusText:获得焦点提示文字

onFocusClass:获得焦点样式

onEmptyText:当输入项为空显示文字

onEmptyClass:当输入项为空显示样式

onErrorText:验证错误显示文字

onErrorClass:输入验证错误显示样式

onSuccessText:输入成功显示文本

onSuccessClass:输入成功显示样式

comType:比较类型

dataType:输入比较内容的数据类型

dataType:输入比较内容的数据类型

comId:相比较的目标控件ID

targetId:用于显示提示信息的控件id

 

这里的比较类型分为如下几种: “==”   “!=”   “>”   “>=”   “<”   <=“” 

比较的数据类型分为如下几种: "text"  "number"  "date" 

这里对date 数据类型还没有做任何处理,在后期过程中更新

 

(三). 控件值之间的比较源码解析

jQuery控件值之间的比较 源码解析

/**
 * onFocusText:获得焦点提示文字
 * onFocusClass:获得焦点样式
 * onEmptyText:当输入项为空显示文字
 * onEmptyClass:当输入项为空显示样式
 * onErrorText:验证错误显示文字
 * onErrorClass:输入验证错误显示样式
 * onSuccessText:输入成功显示文本
 * onSuccessClass:输入成功显示样式
 * comType:比较类型
 * dataType:输入比较内容的数据类型
 * comId:相比较的目标控件ID
 * targetId:用于显示提示信息的控件id
 * @param {Object} inputArg
 */
$.fn.extend({
    checkCompare:function(inputArg){
        //只验证输入框信息
        if($(this).is("input") || $(this).is("textarea")){
            if($(this).attr("type")!="radio" && $(this).attr("type")!="checkbox"){
                
                //绑定获得焦点事件
                $(this).bind("focus",function(){
                    var value=$(this).val();
                    if(value!=undefined && value!=""){
                        
                    }else{
                        //显示获得焦点文本
                        addText(inputArg.targetId,inputArg.onEmptyText);
                        //切换样式
                        addClass(inputArg.targetId,inputArg.onEmptyClass);
                    }
                });
                
                //绑定失去焦点事件
                $(this).bind("blur",function(){
                    var value=$(this).val();
                    if(value==undefined || value==""){
                        //显示获得焦点文本
                        addText(inputArg.targetId,inputArg.onEmptyText);
                        //切换样式
                        addClass(inputArg.targetId,inputArg.onEmptyClass);
                    }else{
                        var targetValue=$("#"+inputArg.comId).val();
                        var flag=false;
                        switch(inputArg.dataType){
                            case "text":
                                if(inputArg.comType == "=="){ 
                                    flag=value==targetValue?true:false;
                                }else if(inputArg.comType=="!="){
                                    flag=value!=targetValue?true:false;
                                }
                            break;
                            case "number":
                                if(inputArg.comType=="=="){
                                    flag=value==targetValue?true:false;
                                }else if(inputArg.comType=="!="){
                                    flag=value!=targetValue?true:false;
                                }else if(inputArg.comType==">"){
                                    flag=value>targetValue?true:false;
                                }else if(inputArg.comType==">="){
                                    flag=value>=targetValue?true:false;
                                }else if(inputArg.comType=="<"){
                                    flag=value<targetValue?true:false;
                                }else if(inputArg.comType=="<="){
                                    flag=value<=targetValue?true:false;
                                }
                            break;
                            case "date":
                            break;
                        }
                        if(flag){
                            //显示获得焦点文本
                            addText(inputArg.targetId, inputArg.onSuccessText);
                            //切换样式
                            addClass(inputArg.targetId, inputArg.onSuccessClass);
                        }else{
                            //显示获得焦点文本
                            addText(inputArg.targetId, inputArg.onErrorText);
                            //切换样式
                            addClass(inputArg.targetId, inputArg.onErrorClass);
                        }
                    }
                });
            }
        }
    }
});

 

  这段代码其实非常简单了,因为没有涉及到复杂的判断,只是在不同类型值之间的比较关系,同时也限定了比较的控件类型text 和 textarea 两种元素。这个大大简化了验证的复杂度。这段代码相对之间也有所精简,这里的精简不是对功能的减少,而是对代码的重构,方法的提取。这里面用到了上几篇文章的功用方法,用于添加文本和修改样式信息。

添加文本和样式信息 功用代码解析

/**
 * 根据输入框的不同类型来判断
 * @param {Object} flag
 * @param {Object} inputArg
 */
function addMessage(flag,inputArg){
    if(flag){
        //显示正确信息文本
        addText(inputArg.targetId,inputArg.onSuccessText);
        //切换样式
        addClass(inputArg.targetId,inputArg.onSuccessClass);
    }else{
        //显示错误信息文本
        addText(inputArg.targetId,inputArg.onErrorText);
        //切换样式
        addClass(inputArg.targetId,inputArg.onErrorClass);
    }
}
/**
 * 给目标控件添加显示的文本信息
 * @param {Object} targetId 目标控件id
 * @param {Object} text        需要显示的文本信息
 */
function addText(targetId,text){
    if(text==undefined){
        text="";
    }
    $("#"+targetId).html("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+text);
}
/**
 * 切换样式
 * @param {Object} targetId 目标控件id
 * @param {Object} className 显示的样式名称
 */
function addClass(targetId,className){
    if(className!=undefined && className!=""){
        $("#"+targetId).removeClass();
        $("#"+targetId).addClass(className);
    }
}

 

  内容还是一样,没有做任何更改,这里再次贴出这段代码,是为了方便查看方法体,没有其他的作用!

 

(四). 使用例子

字符串之间的比较效果图

 获得焦点时候提示

 失去焦点验证错误提示

 失去焦点验证成功

以上是对字符的比较验证,其验证测试代码如下

控件字符串之间的验证

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Untitled Document</title>
        <link type="text/css" rel="stylesheet" href="new_file.css"/>
        <script language="JavaScript" type="text/javascript" src="jquery-1.3.2.min.js"></script>
        <script language="JavaScript" type="text/javascript" src="jquery-extend-1.0.0.js"></script>
        <script language="JavaScript" type="text/javascript">
            $(document).ready(function(){
                $("#txtPass2").checkCompare({
                    onFocusText:"要和上面的填写一样哦",
                    onFocusClass:"notice",
                    onEmptyText:"不允许为空,你要听话点",
                    onEmptyClass:"error",
                    onErrorText:"验证错误了,请你认真填写",
                    onErrorClass:"error",
                    onSuccessText:"恭喜啊 成功了",
                    onSuccessClass:"correct",
                    comType:"==",
                    dataType:"text",
                    comId:"txtPass1",
                    targetId:"txtPass2Tip"
                });
            });
        </script>
    </head>
    <body>
        <p>
            <label>密码1:</label><input type="text" id="txtPass1" value=""/><span id="txtPass1Tip"></span>
        </p>
        <p>
            <label>密码2:</label><input type="text" id="txtPass2" value=""/><span id="txtPass2Tip"></span>
        </p>
    </body>
</html>

 

 

  数字之间的验证

 数字验证获得焦点提示作用

 数字验证失去焦点验证失败

 数字验证失去焦点验证成功

控件数字之间的比较验证

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Untitled Document</title>
        <link type="text/css" rel="stylesheet" href="new_file.css"/>
        <script language="JavaScript" type="text/javascript" src="jquery-1.3.2.min.js"></script>
        <script language="JavaScript" type="text/javascript" src="jquery-extend-1.0.0.js"></script>
        <script language="JavaScript" type="text/javascript">
            $(document).ready(function(){
                $("#txtPass2").checkCompare({
                    onFocusText:"结果要比前面的大",
                    onFocusClass:"notice",
                    onEmptyText:"不允许为空,你要听话点",
                    onEmptyClass:"error",
                    onErrorText:"验证错误了,请你认真填写",
                    onErrorClass:"error",
                    onSuccessText:"恭喜啊 成功了",
                    onSuccessClass:"correct",
                    comType:">",
                    dataType:"number",
                    comId:"txtPass1",
                    targetId:"txtPass2Tip"
                });
            });
        </script>
    </head>
    <body>
        <p>
            <label>密码1:</label><input type="text" id="txtPass1" value=""/><span id="txtPass1Tip"></span>
        </p>
        <p>
            <label>密码2:</label><input type="text" id="txtPass2" value=""/><span id="txtPass2Tip"></span>
        </p>
    </body>
</html>

 

 

  文章内容不想做过多的解释了,此文非常简单,相对于前面几篇文章来说。表单验证扩展不断更新中,后续期待............

时间: 2024-10-25 13:09:38

jQuery 表单验证扩展(四)的相关文章

jQuery 表单验证扩展(五)

大概在一个月之前,自己尝试着写一个jQuery的表单验证插件,当初的目的并不是为了让这个插件流行起来,只是为了自己学习的需要.由于工作的问题,这个问题一直处于停留的状态.前些天报名参加了那个什么博客大赛,最近未写一篇博客,当然本文也不是了参加什么博客大赛而写,只是作为自己学习的积累.今天抽空重新整理了一下插件中的正则表达式的验证,在此分享一下.希望大家多多指教   文章回顾: jQuery 表单验证扩展(一)  jQuery 表单验证扩展(二)  jQuery 表单验证扩展(三)  jQuery

jQuery 表单验证扩展代码(二)_jquery

一. 存在的问题 在上篇中我已经提到过,验证提示打算用文本和样式两种方式来显示提示消息,这两种提示都只能单独使用,于是新的跟新内容做了一些扩展,使得两者可以共用.前一篇写的是否必填项这个验证只是正对 Text, TextArea 这两个表单元素,在新的扩展中同时也支持了radio,checkbox 两个元素. 二. 验证参数的设计 基于多重选择的考虑,扩展了一些有必要的参数,参数列表如下: required: 是否为必填项,true 和 false ,true 表示为必填项 (*) onFocu

jQuery 表单验证扩展(三)_jquery

在看这篇文章之前, 可以看看前两篇文章,表单验证输入范围验证是在原有的基础上改写的. (一). 输入范围验证存在问题 在第二篇上提到的问题,在原有的验证中也存在相同的问题.当然在这次改写中也解决了一些这些问题.同时也添加了对radio,checkbox,select 元素的验证.当然对于时间的验证仍没有解决,后续过程中会继续补充! (二). 验证参数的设计 onEmptyText: 当输入内容为空的时候显示文本 onEmptyClass: 当输入内容为空的时候显示样式 onSuccessText

jQuery 表单验证扩展(二)

前些天写了一篇文章 jQuery 表单验证扩展(一) ,这是jQuery表单验证扩展的一个雏形,里面有了一些基本的功能!昨晚再次努力了一下,对表单中是否必填项验证这个部分做了一些修改的扩充!   一. 存在的问题 在上篇中我已经提到过,验证提示打算用文本和样式两种方式来显示提示消息,这两种提示都只能单独使用,于是新的跟新内容做了一些扩展,使得两者可以共用.前一篇写的是否必填项这个验证只是正对 Text, TextArea 这两个表单元素,在新的扩展中同时也支持了radio,checkbox 两个

jQuery 表单验证扩展代码(一)_jquery

再次申明,插件问题比较多,后期一个个来解决,请不要恶言相向.希望各位多多提好的建议善言. 一. 分析表单验证的基本情况 在我们做web开发的过程中,会遇到各种各样的验证.归纳一下基本可以分为一下几类: (1). 是否必填项 [这个是非常基本的] (2). 输入参数中的范围校验 (3). 输入参数与另外一个控件值的比较 (4). 输入的参数正则表达式验证 二. 是否必填项验证 有如下几种情况: (1) 输入框获得焦点提示 (2)输入框失去焦点验证错误提示 (3)输入框失去焦点验证正确提示 首先确定

jQuery 表单验证扩展(一)

好长一段时间没有写js代码了,也好长时间没有写文章了.今天刚申请一个2M 的电信宽带,下午闲来无事写了一个 基于jQuery的表单验证插件.首先申明这个插件问题比较多,不过觉得这个东西很有必要.后期持续跟新中,先把自己写的插件原型拿出来晒晒! 再次申明,插件问题比较多,后期一个个来解决,请不要恶言相向.希望各位多多提好的建议善言.    一. 分析表单验证的基本情况 在我们做web开发的过程中,会遇到各种各样的验证.归纳一下基本可以分为一下几类: (1). 是否必填项 [这个是非常基本的] (2

一款比较实用齐全的jQuery表单验证插件

一款比较实用,并且验证类型齐全的jQuery表单验证插件.英文版原作者@Vanadium,由我做中文整理.E文水平有限,如果翻译的有问题的,请大家指出,在此感谢~ 可以验证哪些? 文字,日期,邮箱,网址,数字,AJAX用户名验证以及自定义的正则等等几乎所有我们要用到的验证. 不多说,看DEMO吧:点些下载 如何使用? 第一步,当然是和使用其他jQuery插件一样,引入插件文件vanadium.js;第二步,根据你表单要使用的验证方法,在你的表单中加入对应的验证挂钩.比如你想使下面的表单为必填项:

JQuery表单验证插件EasyValidator用法分析_jquery

本文实例讲述了JQuery表单验证插件EasyValidator用法.分享给大家供大家参考.具体如下: 本插件的宗旨是:用户无需写一行JS验证代码,只需在要验证的表单中加入相应的验证属性即可,让验证功能易维护,可扩展,更容易上手. DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以针对不同用户特殊需求,自行写正则吧. EasyValidator实现的功能: 1.提示功能(在表单或者其他标签中加入tip="想提示的文字") 如: 复制代码 代码如下: <inp

jQuery 表单验证插件formValidation实现个性化错误提示_javascript技巧

其效果图如下:使用说明 需要使用jQuery库文件和formValidation库文件[下载实例代码] http://jquery.com/ 同时需要自定义显示提示错误信息的CSS样式 使用实例 一,包含文件部分 复制代码 代码如下: <script src="jquery.js" type="text/javascript"></script> <script src="jquery.validationEngine.js&