• layui表单验证


    1.layui表单验证

      低版本的layui的表单验证有一些bug,比如,想实现非必填的邮箱校验,直接使用lay-verify="email"就会有问题。此时的效果是格式校验正确,但是不填的时候会报错。

      此时有这么几个解决方法:

      1.1 升级插件

      在高版本的layui中这个问题是解决了的。附上部分源码

     1 this.config = {
     2                 verify: {
     3                     required: [/[S]+/, "必填项不能为空"],
     4                     phone: [/(^$)|^1d{10}$/, "请输入正确的手机号"],
     5                     email: [/(^$)|^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/, "邮箱格式不正确"],
     6                     url: [/(^$)|(^#)|(^http(s*)://[^s]+.[^s]+)/, "链接格式不正确"],
     7                     number: [/(^$)|^d+$/,'只能填写数字'],
     8                     date: [/(^$)|^(d{4})[-/](d{1}|0d{1}|1[0-2])([-/](d{1}|0d{1}|[1-2][0-9]|3[0-1]))*$/, "日期格式不正确"],
     9                     identity: [/(^$)|(^d{15}$)|(^d{17}(x|X|d)$)/, "请输入正确的身份证号"]
    10                 }
    11 }

      此时加上了(^$)|,所以为空的时候也是校验通过的了。

      1.2 改插件源码

      道理同上,需要改的是form.jslayui.all.js。

      1.3 自定义校验

      原理还是和上边一样的。关键代码:

     1 form.verify({
     2       yearLength: function(value){
     3           if(value.length !== 4){
     4                   return '输入年份格式错误';
     5                 }
     6           }
     7           ,numberQq: function(value){
     8               if(!/(^$)|^d+$/.test(value)){
     9                     return 'QQ号码格式错误';
    10                   }
    11           }
    12           ,emaliReg: function(value){
    13               if(!/(^$)|^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/.test(value)){
    14                     return '邮箱格式错误';
    15                   }
    16           }
    17       });

    2.一些知识点回顾

      2.1 元素选择器循环

      元素选择器选中的元素是个数组,有长度属性,但是不是严格意义的数组,所以不能使用数组的forEach。它有自己的循环,叫each,且两个参数第一个是index,第二个是e,与普通js数组的forEach参数顺序相反。

      2.2 $(window).height() 和 $(document).height()

      前者是可见区域的高度,后者是文档高度。这个知识点很基础也很实用。

      2.3 jquery选择器parent和parents

      前者选取的是上一级,而后者顾名思义可以选择到全部上级,因而可以结合其他选择器选择特定父元素,如$($('.del_con')[0]).parents('.connecter')

  • 相关阅读:
    Bandit Wargame Level18 Writeup(interactive shell and .bashrc )
    Bandit Wargame Level12 Writeup
    Natas Wargame Level25 Writeup(头部注入+POST/GET注入)
    Mybatis 加载 Mapper配置的四种方式
    设计模式(四)---- 代理模式
    execute() 和 sumbit() 的区别
    Executors提供的四种线程池
    线程的三种实现方法
    同一个线程多次调用start()会出现的问题
    线程的介绍
  • 原文地址:https://www.cnblogs.com/ljwsyt/p/11611645.html
Copyright © 2020-2023  润新知