LVT4JS是笔者在使用Javascript、JQuery期间,对一些常见工具、方法的总结。包括但不限于:复杂表单对象收集、Checkbox联动、全局Loading态、 Toast信息条、时间日期格式化与解析、文件尺寸格式化等等
LVT.xxx
同时部分功能也提供了简化方法,可以LVT.xxx
调用的也可以Txxx
形式调用,
如timestampFormat调用可以是LVT.timestampFormat()
也可以是TtimestampFormat()
Tform:复杂对象收集
市面常见的表单收集工具一般仅处理了只有一个层级的表单的数据收集与校验,对于复杂对象,如对象套数组、数组套对象等的收集功能略有欠缺。
LVT4JS的Tform功能处理了复杂对象与html标签的映射与数据收集&设置的问题。
先看一个简单的例子
默认情况下在调用$('#id').formData()
进行数据收集时,若数据不符合要求(如违反data-required,data-range,data-regex)等,
方法会返回null并在$('#id')
下寻找class为'valid-err
'的元素并将其内容修改为错误信息(可以是自定义的出错元素的data-err)
若要自定义错误信息的展示方式,调用formData()时传入一个errMsgHolder(空对象等),如var errMsg = {};$('#id').formData(null, errMsg);alert(errMsg.msg);
如果出错会在errMsgHolder的键'msg'上传入错误信息,
拿到该信息后业务代码可自定义展示形式(如alert出来)
$('#id').formData()
时,如果$('#id')的data-type标记的不是obj而是arr或者int等,会返回具体data-type标记的数据类型。即调用formData()实际上是把$('#id')作为默认data-type标记为obj的元素来收集数据,而当显式声明了data-type后,默认的obj就失效了。
Checkbox联动
主checkbox添加forgroup参数 子checkbox添加group参数
需要在页面载入完成后调用LVT.cbxRely.init()
页面动态生成子checkbox后也需要调用LVT.cbxRely.init()
学生 | |
小红 | |
小明 |
教师 | |
张三 | |
李四 |
异步提交时,为防止用户进行重复提交,一个简单粗暴的做法是使用loading态。
本工具提供一个简单的loading态实现,LVT.loader.show('等待中')
展示loading态,LVT.loader.hide('等待中')
隐藏loading态,简化写法Tloader.show()/hide()
gif | 展示loading时的图片资源地址,在第一调用show()之前,可替换成其他资源 |
threshold | 出现loading信息的延迟时间(ms) |
show(msg) | 默认的延迟出现loading信息。 一般情况下,点击要执行异步任务的按钮后,不必立刻出现loading态,尤其在异步任务耗时较短时,会造成屏幕闪烁 本方法在调用后延迟 threshold 后再出现loading信息,在此期间如果调用了hide() 则不会再出现loading信息接收一个文本参数为loading时展示的文本信息,多次调用两个相同的文本信息视为不同的loading态信息 |
immediateShow(msg) | 无延时等待直接展示loading态 |
hide(msg) | 消除一个指定的loading信息,接收一个文本信息,对应show/immediateShow |
change(origMsg, msg) | 异步任务在执行期间,有时可能会需要变换loading文案,本方法接收两个文本参数,将第一个文本的loading态文案转成第二个文本。变换后若要hide() ,需要传参变换后的文案 |
出现一个短暂的toast浮条,提示一些信息。用法LVT.toast.show(msg)
简化写法Ttoast.show(msg)
threshold | toast信息的持续时间(ms),默认1500 |
show(msg) | 弹出toast,提示msg信息 |
contains(arr, ele) | 利用== 判断数组中是否包含元素ele |
add(arr, ele) | 向数组添加一个元素,若已有该元素则忽略,采用浅克隆的方法,返回添加过元素的数组,原数组不变 |
remove(arr, ele) | 从数组删除一个元素,若没该元素则忽略,采用浅克隆的方法,返回删除过元素的数组,原数组不变 |
clone(arr) | 浅克隆数组 |
isEmpty(obj) | 判断是否空对象,即一个键值对都没有 |
size(obj) | 计算object中键值对的个数 |
clone(obj) | 浅克隆对象 |
remove(obj, key2Del) | 从object删除指定key,返回删除key后的浅克隆对象 |
add(obj, obj2Add) | 将一个obj加入另一个obj,若原对象已有key,则覆盖,返回添加后的浅克隆对象 |
hashCode(obj) | 计算一个对象的哈希值 |