当前位置: 首页 > news >正文

【jQuery】学习jQuery插件的使用与写法(表单验证插件-validation)

最新最全的插件可以从jQuery官方网站的插件板块下载,网站地址为:http://plugins.jquery.com/

Validation优点:内置验证规则;自定义验证规则;简单强大的验证信息提示;实时验证。

三种不同的写法

1.1 确认哪个表单需要被验证,引入jquery.validate.js插件

<script type="text/javascript">
$(document).ready(function(){
    $("#commentForm").validate();/*确定哪个表单需要被验证;*/
});
</script>

1.2 针对不同字段,进行验证规则编码,设置字段相应的属性

 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
   <legend>一个简单的验证带验证提示的评论例子</legend>
   <p>
     <label for="cusername">姓名</label>
     <em>*</em><input id="cusername" name="username" size="25" class="required" minlength="2" /><!--必须填写,最小长度-->
   </p>
   <p>
     <label for="cemail">电子邮件</label>
     <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
   </p>
   <p>
     <label for="curl">网址</label>
     <em>  </em><input id="curl" name="url" size="25"  class="url" value="" /><!--url格式验证-->
   </p>
   <p>
     <label for="ccomment">你的评论</label>
     <em>*</em><textarea id="ccomment" name="comment" cols="22"  class="required"></textarea>
   </p>
   <p>
     <input class="submit" type="submit" value="提交"/>
   </p>
 </fieldset>
 </form>

2.1 再引入jquery.metadata.js插件(支持固定格式解析的jQuery插件)后可以采用不同的写法

  <script type="text/javascript">
  $(document).ready(function(){
        $("#commentForm").validate({meta: "validate"});
  });
  </script>

2.2 效果与1.2相同,写法不同而已

 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
   <legend>一个简单的验证带验证提示的评论例子</legend>
   <p>
     <label for="cusername">姓名</label>
     <em>*</em><input id="cusername" name="username" size="25"  class="{validate:{required:true, minlength:2}}" />
   </p>
   <p>
     <label for="cemail">电子邮件</label>
     <em>*</em><input id="cemail" name="email" size="25"   class="{validate:{required:true, email:true}}"  />
   </p>
   <p>
     <label for="curl">网址</label>
     <em>  </em><input id="curl" name="url" size="25"  value=""   class="{validate:{url:true}}" />
   </p>
   <p>
     <label for="ccomment">你的评论</label>
     <em>*</em><textarea id="ccomment" name="comment" cols="22"  class="{validate:{required:true}}" ></textarea>
   </p>
   <p>
     <input class="submit" type="submit" value="提交"/>
   </p>
 </fieldset>
 </form>

3.1 在$("#commentForm").validate()方法中增加rules属性

  <script type="text/javascript">
  $(document).ready(function(){

    $("#commentForm").validate({
        rules: {
            username: {
                required: true,
                minlength: 2
            },
            email: {
                required: true,
                email: true
            },
            url:"url",
            comment: "required"
        }
      });

  });
  </script>

3.2 将字段中的class属性移除,通过name属性匹配验证规则

 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
   <legend>一个简单的验证带验证提示的评论例子</legend>
   <p>
     <label for="cusername">姓名</label>
     <em>*</em><input id="cusername" name="username" size="25" />
   </p>
   <p>
     <label for="cemail">电子邮件</label>
     <em>*</em><input id="cemail" name="email" size="25"  />
   </p>
   <p>
     <label for="curl">网址</label>
     <em>  </em><input id="curl" name="url" size="25"  value="" />
   </p>
   <p>
     <label for="ccomment">你的评论</label>
     <em>*</em><textarea id="ccomment" name="comment" cols="22"></textarea>
   </p>
   <p>
     <input class="submit" type="submit" value="提交"/>
   </p>
 </fieldset>
 </form>

以上三种写法的验证结果如下

validation默认是提示英文,要显示中文,可以引入jquery.validate.messages_cn.js,其内容如下

jQuery.extend(jQuery.validator.messages, {
        required: "必选字段",
        remote: "请修正该字段",
        email: "请输入正确格式的电子邮件",
        url: "请输入合法的网址",
        date: "请输入合法的日期",
        dateISO: "请输入合法的日期 (ISO).",
        number: "请输入合法的数字",
        digits: "只能输入整数",
        creditcard: "请输入合法的信用卡号",
        equalTo: "请再次输入相同的值",
        accept: "请输入拥有合法后缀名的字符串",
        maxlength: jQuery.format("请输入一个长度最多是 {0} 的字符串"),
        minlength: jQuery.format("请输入一个长度最少是 {0} 的字符串"),
        rangelength: jQuery.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
        range: jQuery.format("请输入一个介于 {0} 和 {1} 之间的值"),
        max: jQuery.format("请输入一个最大为 {0} 的值"),
        min: jQuery.format("请输入一个最小为 {0} 的值")
});

此时提示结果为(中文,覆盖了原来的英文提示)

还可以自定义验证规则,如修改字段提示信息的class值,为验证提示信息添加图片,增加“验证码”

程序中增加了messages属性

  <script type="text/javascript">
  $(document).ready(function(){

    //自定义一个验证方法
    $.validator.addMethod(
    "formula", //验证方法名称
    function(value, element, param) {//验证规则
        return value == eval(param);
    }, 
    '请正确输入数学公式计算后的结果'//验证提示信息
    );

    $("#commentForm").validate({
        rules: {
            username: {
                required: true,
                minlength: 2
            },
            email: {
                required: true,
                email: true
            },
            url:"url",
            comment: "required",
            valcode: {
                formula: "7+9"    
            }
        },
        
        messages: {
            username: {
                required: '请输入姓名',
                minlength: '请至少输入两个字符'
            },
            email: {
                required: '请输入电子邮件',
                email: '请检查电子邮件的格式'
            },
            url: '请检查网址的格式',
            comment: '请输入您的评论'
        },    
        
        errorElement: "em",                //用来创建错误提示信息标签
        success: function(label) {            //验证成功后的执行的回调函数
            //label指向上面那个错误提示信息标签em
            label.text(" ")                //清空错误提示消息
                .addClass("success");    //加上自定义的success类
        }


      });

  });
  </script>

表单部分:

 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
   <legend>一个简单的验证带验证提示的评论例子</legend>
   <p>
     <label for="cusername">姓名</label>
     <em>*</em><input id="cusername" name="username" size="25" />
   </p>
   <p>
     <label for="cemail">电子邮件</label>
     <em>*</em><input id="cemail" name="email" size="25"  />
   </p>
   <p>
     <label for="curl">网址</label>
     <em>  </em><input id="curl" name="url" size="25"  value="" />
   </p>
   <p>
     <label for="ccomment">你的评论</label>
     <em>*</em><textarea id="ccomment" name="comment" cols="22"></textarea>
   </p>
   <p>
     <label for="cvalcode">验证码</label>
     <input id="cvalcode" name="valcode" size="25"  value="" />=7+9
   </p>
   <p>
     <input class="submit" type="submit" value="提交"/>
   </p>
 </fieldset>
 </form>

在CSS中添加失败和成功对应的小图片

em { font-weight: bold; padding-right: 1em; vertical-align: top; }
em.error {
  background:url("images/unchecked.gif") no-repeat 0px 0px;
  padding-left: 16px;
}
em.success {
  background:url("images/checked.gif") no-repeat 0px 0px;
  padding-left: 16px;
}

提示结果如下

完整程序地址:https://github.com/yujihang/jQuery-Validation

转载于:https://www.cnblogs.com/yujihang/p/6701885.html

相关文章:

  • Oracle使用row_number()函数查询时增加序号列
  • 【Java基础】序列化与反序列化深入分析
  • Elasticsearch前沿:ES 5.x改进详解与ES6展望
  • 一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!
  • node-glob通配符
  • Bzoj1005 [HNOI2008]明明的烦恼
  • 正则表达式 取反 非
  • Git学习与使用心得(1)—— 初始化
  • [转载]Monit:开源服务器监控工具
  • 运行第一个容器 - 每天5分钟玩转容器技术(4)
  • thrift实例:python实现
  • 微信开放平台手机APP支付
  • px PPI
  • fedora25输入法,中文输入法该用哪个——rime
  • 如何培养《未来架构师》(1)
  • Android 控件背景颜色处理
  • Codepen 每日精选(2018-3-25)
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript中的对象个人分享
  • Java超时控制的实现
  • js作用域和this的理解
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • React组件设计模式(一)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue自定义指令实现v-tap插件
  • Windows Containers 大冒险: 容器网络
  • 和 || 运算
  • 后端_MYSQL
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 爬虫模拟登陆 SegmentFault
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信支付JSAPI,实测!终极方案
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 《码出高效》学习笔记与书中错误记录
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​渐进式Web应用PWA的未来
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (13):Silverlight 2 数据与通信之WebRequest
  • (Oracle)SQL优化技巧(一):分页查询
  • (八)Spring源码解析:Spring MVC
  • (二)JAVA使用POI操作excel
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (一)WLAN定义和基本架构转
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .Net 4.0并行库实用性演练
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)