致力于网页设计制作教程:HTTP://WWW.ASP119.COM

当前位置:首页 > 网页制作 > Javascript/Ajax

JQuery在复杂表单中应用初级教程

作者:迷失的宇 来源:ASP急救中心 浏览: 添加日期:2010-10-14  我要评论( )

[导读] JQuery在复杂表单中应用一. 分析表单验证的基本情况 在我们做web开发的过程中,会遇到各种各样的验证。归纳一下基本可以分为一下几类:
(1). 是否必填项...

一. 分析表单验证的基本情况 在我们做web开发的过程中,会遇到各种各样的验证。归纳一下基本可以分为一下几类:


(1). 是否必填项 [这个是非常基本的]

(2). 输入参数中的范围校验

(3). 输入参数与另外一个控件值的比较

(4). 输入的参数正则表达式验证

 

二. 是否必填项验证

有如下几种情况: (1) 输入框获得焦点提示  (2)输入框失去焦点验证错误提示  (3)输入框失去焦点验证正确提示

首先确定输入框是否是必填项,然后就是提示消息的现实位置。

根据以上几种情况确定如下几个参数:

 required : 是否为必填项,true 和 false ,true 表示为必填项 (*)

 onFocus : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onBlur : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)

onSucces : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

tipId : 用于显示提示信息的控件id (*)

组合例子 : {required:true,onFocus:"Required",onBlur:"@error",onSucces:"Success",tipId:"tipid"} 

注意: 上面定义的一些规则,有些可能没有实现,在后期过程中逐渐完善。
 

JavaScript Code
  1. /**  
  2.  * 检查输入框是否为必填项  
  3.  * 输入参数:  
  4.  * required    : 是否为必填项,true 和 false ,true 表示为必填项 (*)  
  5.  * onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  6.  * onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)  
  7.  * onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  8.  * tipId    : 用于显示提示信息的控件id (*)  
  9.  * 组合例子    : {required:true,onFocus:"Required",onBlur:"@error",onSucces:"Success",tipId:"tipid"}  
  10.  */  
  11. $.fn.extend({   
  12.     checkRequired:function(inputArg){   
  13.         if(inputArg.required){   
  14.             if($(this).is("input") || $(this).is("textarea")){   
  15.                 //绑定获得焦点事件   
  16.                 $(this).bind("focus",function(){   
  17.                     if(inputArg.onFocus!=undefined){   
  18.                         $("#" + inputArg.tipId).html(inputArg.onFocus);   
  19.                     }   
  20.                 });   
  21.                    
  22.                 //绑定失去焦点事件   
  23.                 $(this).bind("blur",function(){   
  24.                     if($(this).val()!=undefined && $(this).val()!=""){   
  25.                         $("#" + inputArg.tipId).html(inputArg.onSucces);   
  26.                     }else{   
  27.                         $("#" + inputArg.tipId).html(inputArg.onBlur);   
  28.                     }   
  29.                 });   
  30.             }   
  31.         }   
  32.     }   
  33. });  

使用效果和测试代码:

  当获得焦点时候后面提示效果

  当失去焦点没有输入提示效果

 当输入文本信息之后提示成功效果

测试代码如下:
 

JavaScript Code
  1. jQuery检查输入框是否为必填项 测试代码   
  2. <script language="JavaScript" src="jquery-1.3.2.min.js" type="text/javascript"></script>   
  3. <script language="JavaScript" src="jquery-extend-1.0.0.js" type="text/javascript"></script>   
  4. <script language="JavaScript" type="text/javascript">   
  5.     $(document).ready(function(){   
  6.         $("#txtName").checkRequired({   
  7.             required:true,   
  8.             onFocus:"这个为必填项",   
  9.             onBlur:"必须填写啊",   
  10.             onSucces:"恭喜,你输入了",   
  11.             tipId:"txtNameTip"  
  12.         });   
  13.     });   
  14. </script>  


三. 输入参数中的范围校验

相比上面的验证来说,这个稍微复杂了一些,因为有输入值的范围。校验做了如下区分:输入的数据类型为 字符串, 数字 ,时间

如果是字符串则比较字符串的长短,数字和时间比较大小。(时间目前没有完善)

因为比较范围所以定义一个区间范围,所以这里再添加两个属性,下限值和上限值。

输入参数列表:

onFocus : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onEmpty : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onSucces : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onBlur : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)

dataType : 数据类型参数(text,number,date)

min : 输入的最小值

max : 输入的最大值

tipId : 用于显示提示信息的控件id (*)

折叠JavaScript Code
  1. jQuery检查输入项的范围   
  2. /**  
  3.  * 检查输入项的范围  
  4.  * 输入参数:  
  5.  * onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  6.  * onEmpty    : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  7.  * onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  8.  * onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)  
  9.  * dataType    : 数据类型参数(text,number,date)  
  10.  * min        : 输入的最小值  
  11.  * max        : 输入的最大值  
  12.  * tipId    : 用于显示提示信息的控件id (*)  
  13.  *   
  14.  */  
  15. $.fn.extend({   
  16.     checkRange:function(inputArg){   
  17.         if ($(this).is("input") || $(this).is("textarea")) {   
  18.             //获得焦点绑定   
  19.             $(this).bind("focus",function(){   
  20.                 if(inputArg.onFocus!=undefined){   
  21.                     $("#" + inputArg.tipId).html(inputArg.onFocus);   
  22.                 }   
  23.             });   
  24.                
  25.             //失去焦点绑定   
  26.             $(this).bind("blur",function(){   
  27.                 if($(this).val()==undefined || $(this).val()==""){   
  28.                     $("#" + inputArg.tipId).html(inputArg.onEmpty);   
  29.                 }else{   
  30.                     switch(inputArg.dataType){   
  31.                         case "text":   
  32.                             if($(this).val().length>= parseInt(inputArg.min) && $(this).val().length< parseInt(inputArg.max)){   
  33.                                 $("#" + inputArg.tipId).html(inputArg.onSucces);   
  34.                             }else{   
  35.                                 $("#" + inputArg.tipId).html(inputArg.onBlur);   
  36.                             }   
  37.                         break;   
  38.                         case "number":   
  39.                             if(!isNaN($(this).val())){   
  40.                                 if(parseInt($(this).val())>parseInt(inputArg.min) && parseInt($(this).val())<parseInt(inputArg.max)){   
  41.                                     $("#" + inputArg.tipId).html(inputArg.onSucces);   
  42.                                 }else{   
  43.                                     $("#" + inputArg.tipId).html(inputArg.onBlur);   
  44.                                 }   
  45.                             }   
  46.                         break;   
  47.                         case "date":   
  48.                         break;   
  49.                     }   
  50.                 }   
  51.             });   
  52.         }   
  53.     }   
  54. });   

输入项范围效果和测试代码

  如果年龄约定为数字 

  输入不在约定范围之内

  验证成功 
 

折叠JavaScript Code
  1. $("#txtAge").checkRange({   
  2.     onFocus:"年龄为数字",   
  3.     onEmpty:"不能为空啊",   
  4.     onSucces:"验证成功",   
  5.     onBlur:"验证失败,请认真输入",   
  6.     dataType:"number",   
  7.     min:"10",   
  8.     max:"100",   
  9.     tipId:"txtAgeTip"  
  10. });   
  11.   
  12. <p>   
  13. <label>年龄:</label><input type="text" id="txtAge" value=""/><span id="txtAgeTip"></span>   
  14. </p>   


四. 输入参数与另外一个控件值的比较

和上面的验证比较,不同的地方在于要指定比较控件的id

下面是输入参数:

onFocus : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onEmpty : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onSucces : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onBlur : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)

dataType : 数据类型参数(text,number,date)

comType : 比较的类型(=,>,>=,<,<=,!=)

tipId : 用于显示提示信息的控件id (*)

targetId : 比较的目标控件Id
 


提示:可以修改后运行.

控件值之间的比较效果和测试代码

  效果图1

       效果图2

          效果图3
 

$("#txtPass2").checkCompare({
    onFocus:"和前面的比较",
    onEmpty:"输入的不能为空",
    onSucces:"验证成功",
    onBlur:"验证失败",
    dataType:"number",
    comType:">=",
    tipId:"txtPass2Tip",
    targetId:"txtPass1"
});

<p>
            <label>密码1:</label><textarea id="txtPass1"></textarea><span id="txtPass1Tip"></span>
        </p>
        <p>
            <label>密码2:</label><textarea id="txtPass2"></textarea><span id="txtPass2Tip"></span>
        </p>


 

 

这个验证相对比较简单,因为使用正则表达式,无需自己去思考输入的情况。只需要引入一个正则表达式就可以了

下面是输入参数:

onFocus : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onEmpty : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onSucces : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)

onBlur : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)

regExp : 正则表达式

tipId : 用于显示提示信息的控件id (*)

 

JavaScript Code
  1. /**  
  2.  * 正则表达式的验证  
  3.  * 输入参数:  
  4.  * onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  5.  * onEmpty    : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  6.  * onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)  
  7.  * onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)  
  8.  * regExp    : 正则表达式  
  9.  * tipId    : 用于显示提示信息的控件id (*)  
  10.  */  
  11.   
  12. $.fn.extend({   
  13.     checkRegExp:function(inputArg){   
  14.         if ($(this).is("input") || $(this).is("textarea")) {   
  15.             //获得焦点绑定   
  16.             $(this).bind("focus"function(){   
  17.                 if (inputArg.onFocus != undefined) {   
  18.                     $("#" + inputArg.tipId).html(inputArg.onFocus);   
  19.                 }   
  20.             });   
  21.                
  22.             //获得失去焦点事件   
  23.             $(this).bind("blur",function(){   
  24.                 if($(this).val()!=undefined && $(this).val()!=""){   
  25.                     if ($(this).val().match(inputArg.regExp) == null) {    
  26.                         $("#" + inputArg.tipId).html(inputArg.onSucces);   
  27.                     }else{   
  28.                         $("#" + inputArg.tipId).html(inputArg.onBlur);   
  29.                     }   
  30.                 }else{   
  31.                     $("#" + inputArg.tipId).html(inputArg.onEmpty);   
  32.                 }   
  33.             });   
  34.         }   
  35.     }   
  36. });   

正则表达式效果和测试代码

   输入非数字

    输入数字
 


五. 输入的参数正则表达式验证
JavaScript Code
  1. $("#txtAge").checkRegExp({   
  2.     onFocus:"年龄必须为数字",   
  3.     onEmpty:"输入的不能为空",   
  4.     onSucces:"验证成功",   
  5.     onBlur:"验证失败",   
  6.     regExp:/\D/,   
  7.     tipId:"txtAgeTip"  
  8. });   
  9.   
  10. <label>年龄:</label><input type="text" id="txtAge" value=""/><span id="txtAgeTip"></span>   

Tags: JQuery

文章评论

正在载入评论数据中...
用户名:
  QQ号:
*
  匿名发表
验证码: