ValidForm 官方文档

项目的需求是这样的:一个checkbox,一个input,选中checkbox的时候,需要校验input,取消选中的时候,不要校验input。

<input type='checkbox' id='switchCheckbox' />熬夜超过<input type='text' name='hour' />点,就去喝咖啡

1. 配置ignoreHidden

$(".demoform").Validform({
tiptype:1,
ignoreHidden:false
});

默认为false,当为true时对:hidden的表单元素将不做验证;

注意::hidden 表单元素 包括 type='hidden' 的表单项,也包括未显示的表单项(display:none)

但是这个配置是全局性的,无法做到灵活的开关

2. ignore 属性

<input type='text' name='name' datatype='*' ignore='ignore' />

绑定了ignore="ignore"的表单元素,在有输入时,会验证所填数据是否符合datatype所指定数据类型,没有填写内容时则会忽略对它的验证;

这个属性也无法满足需求

3. ignore(selector) 和 unignore(selector) 方法

ignore(selector)【返回值:Validform】

忽略对所选择对象的验证,不传入selector则忽略所有表单元素。

如demo.ignore("select,textarea,#name"),忽略Validform对象下所有select,textarea及一个id为"name"元素的验证。

unignore(selector)【返回值:Validform】

将ignore方法所忽略验证的对象重新获取验证效果,不传入selector则恢复验证所有表单元素。

如demo.unignore("select,textarea,#name"),恢复Validform对象下所有select,textarea及一个id为"name"元素的验证。

这两个方法正好可以解决我的需求。

思路:绑定 checkbox 的点击事件,选中时校验表单项;取消选中时,忽略校验表单项。或者,在 beforeCheck 中根据checkbox选中状态来决定是否校验表单项(代码略)

4. data-data-ignore 属性

该属性在官方文档中没有介绍,原因未知。不过,在源码中确实使用到了该属性。

check:function(curform,subpost,bool){
...
//隐藏或绑定dataIgnore的表单对象不做验证;
if(settings.ignoreHidden && $(this).is(":hidden") || $(this).data("dataIgnore")==="dataIgnore"){
return true;
}
...
}

最终需求代码

// 捕获 checkbox 的点击事件
$("#switchScreenNumberCheck").click(function(){
var $checkbox = $("#switchScreenNumberCheck");
var $e = $("#switchScreenNumber");
// 判断选中状态
if ($checkbox.is(":checked")) {
// 选中则不再忽略校验
$e.data('data-ignore', '');
// 删除 input 保存的上次值(该步骤也可以放在未选中时)
delete $e.get(0).validform_lastval;
// 接着就校验 input
$validform.check(false, $e);
} else {
// 未选中则移除input的校验规则,以及错误样式和文字
$e.data('data-ignore', 'dataIgnore').removeClass('Validform_error');
$e.siblings('.Validform_wrong').text('').removeClass('Validform_wrong');
}
});
// 注意:
// Validform 在表单项值未发生改变的情况下,不会**再次**校验。
// 也就是说,第一次校验完后,如果表单项值没有改变的情况下,不会再次校验。
// 所以在上面的代码中,未选中状态下,我们移除了校验结果(错误样式和文字);
// 当再次选中时,需要再次校验(即使值没有改变) // 注意:data-data-ignore="dataIgnore"
// 该属性在官方文档中没有体现,但在源码中是存在的。
// 它的作用是:表单项的该属性值==='dataIgnore',则忽略对它的校验

当然,以上逻辑也是可以放到 beforeCheck 中的

ValidForm5.3.2 忽略表单项校验详解的更多相关文章

  1. vue.js基础知识篇(7):表单校验详解

    目录 网盘 第12章:表单校验 1.npm安装vue-validator $ npm install vue-validator 代码示例: var Vue=require("vue&quo ...

  2. 【转】vue.js表单校验详解

    官方文档:https://monterail.github.io/vuelidate/ https://github.com/monterail/vuelidate 1.npm安装vue-valida ...

  3. Skip List(跳跃表)原理详解与实现【转】

    转自:http://dsqiu.iteye.com/blog/1705530 Skip List(跳跃表)原理详解与实现 本文内容框架: §1 Skip List 介绍 §2 Skip List 定义 ...

  4. 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

    oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ...

  5. SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解

    本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表   位运算   SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...

  6. 补习系列(4)-springboot 参数校验详解

    目录 目标 一.PathVariable 校验 二.方法参数校验 三.表单对象校验 四.RequestBody 校验 五.自定义校验规则 六.异常拦截器 参考文档 目标 对于几种常见的入参方式,了解如 ...

  7. Oracle create tablespace 创建表空间语法详解

    CREATE [UNDO]  TABLESPACE tablespace_name          [DATAFILE datefile_spec1 [,datefile_spec2] ...... ...

  8. MySQL(九)之数据表的查询详解(SELECT语法)一

    这一篇是MySQL中的重点也是相对于MySQL中比较难得地方,个人觉得要好好的去归类,并多去练一下题目.MySQL的查询也是在笔试中必有的题目.希望我的这篇博客能帮助到大家! 重感冒下的我,很难受!k ...

  9. select表单元素详解及下拉列表模拟实现

    原文地址:→看过来 写在前面 select 是HTML表单元素中很常用的一个,其中很重要的几个属性常被忽略,但这几个属性却能帮助我们完成很多的功能,当然,select下拉列表默认样式很不友好,所以更多 ...

随机推荐

  1. v-for key值?

    不写key值会报warning, 和react的array渲染类似. 根据diff算法, 修改数组后, 写key值会复用, 不写会重新生成, 造成性能浪费或某些不必要的错误

  2. nginx反向代理失败,又是 fastdfs 的锅

    fdfs问题记录 [root@hostcad logs]# systemctl status fdfs_trackerd.service ● fdfs_trackerd.service - LSB: ...

  3. websocket使用nginx代理后连接频繁打开和关闭

    前几天开发了一个功能,使用websocket向前台发送消息,与前端联调时一切正常,但是发布到环境出现如下报错: 发现404,无法找到连接,突然想到环境上是走nginx代理的,应该是nginx没有配置代 ...

  4. Python使用pip安装No matching distribution found for PyYaml==5.3.1

    ERROR: Command errored out with exit status 1: command: /usr/local/dmahz/p_book_data/bin/python3.9 - ...

  5. Zookeeper 下 Server 工作状态 ?

    服务器具有四种状态,分别是 LOOKING.FOLLOWING.LEADING.OBSERVING. 1.LOOKING:寻找 Leader 状态.当服务器处于该状态时,它会认为当前集群中 没有 Le ...

  6. okayNav jQuery 插件怎么使用

    首先到 https://github.com/VPenkov/okayNav 这个网站里面把代码下载下来 下载之后解压出来,解压后打开文件app 然后创建一个HTML文档 然后倒入css的样式 样式: ...

  7. freemarker与vue使用图片路径获取问题,可双单引号一起使用则可

    <el-table :data="leftPage.datas" style="width: 100%"  @selection-change=" ...

  8. Effective Java —— 用私有构造器或枚举类型强化单例属性

    本文参考 本篇文章参考自<Effective Java>第三版第三条"Enforce the singleton property with a private construc ...

  9. CSS自定义属性 —— 别说你懂CSS相对单位

    前段时间试译了Keith J.Grant的CSS好书<CSS in Depth>,其中的第二章<Working with relative units>,书中对relative ...

  10. APICloud Github 5大开源项目集合展示

    APICloud自成立之初,一直秉承着开源一切的初心,为了给予广大开发者们更多的资源及内容.不知不觉,2年时间已过,APICloud的github上已经集合了APICloud模块.前端框架及文档.云A ...