之前的文章《layui框架学习》14-16中介绍了通过预设类及部分layui属性设置表单的外观样式,layui中还提供有表单模块以对表单元素进行各类动态化渲染和相关操作,本文学习并记录表单模块form的常用属性、函数及事件的用法(如果内容已在之前文章中涉及,则不在记录,避免重复)。
动态渲染。虽然通过预设类能够设置表单的样式,但在交互过程中,如果表单元素的内容发生变化(主要是下拉框、复选框、单选框),则需要调用form.render(type, filter)函数重新渲染表单元素样式,其中type的取值包括select、checkbox 、radio,filter指设置了lay-filter属性的表单,如果filter为空,则是重新渲染页面中所有表单中的指定type的表单元素。
自定义验证规则。表单中通过lay-verify属性设置元素的内容验证规则,除了layui内容的验证规则外(必填项、手机号、邮箱等),表单模块支持调用form.verify设置自定义规则,然后在lay-verify属性中指定自定义规则名称即可。自定义验证规则的使用示例及效果如下所示:
<div style="width: 600px;"><form class="layui-form" action=""><div class="layui-form-item"><label class="layui-form-label">用户名</label><div class="layui-input-block"><input type="text" name="rsname" lay-verify="required|username" placeholder="请输入用户名" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">短信码</label><div class="layui-input-block"><input type="text" name="rsname" lay-verify="required|code" placeholder="请输入短信码" autocomplete="off" class="layui-input"></div></div> <div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn layui-bg-red layui-btn-radius" lay-submit>提交</button></div></div></form>
</div><script>layui.use(['form','layer'], function(){var form = layui.form; form.verify({ username: function(value, item)//自定义验证规则可以为函数形式{ if(value === '机器猫'){return '用户名不能为机器猫';}} //也可以采用数组,第一个值为匹配正则表达式,第二个值为不匹配时的报错信息 ,code: [/^\d{4,6}$/,'短信码必须为4到6位的数字'] });});
</script>
select事件。下拉框中选择某一值后会触发select事件,通过form.on(‘select(filter)’, function(data))代码可以获取该事件并做响应处理。事件处理函数示例及截图如下所示:
<div style="width: 600px;"><form class="layui-form" action="">...<div class="layui-form-item layui-form-select"><label class="layui-form-label">选择城市</label><div class="layui-input-block input_city"><select name="type" lay-search=""><option value=""></option><optgroup label="河北省"><option value="0">石家庄</option><option value="1">秦皇岛</option></optgroup><optgroup label="四川省"><option value="2">成都</option><option value="3">广汉</option></optgroup><optgroup label="湖北省"><option value="4">武汉</option><option value="5">荆州</option></optgroup></select></div></div>...</div></form></div><script>layui.use(['form','layer'], function(){var form = layui.form; var layer = layui.layer; ... form.on('select()', function(data){layer.alert("选择的值为"+data.value)}); });</script>
checkbox 事件。勾选或取消勾选复选框时会触发checkbox 事件,通过form.on(‘checkbox(filter)’, function(data))代码可以获取该事件并做响应处理。事件处理函数示例及截图如下所示:
form.on('checkbox()', function(data){layer.alert("checked = "+data.elem.checked+ ",value = "+data.value)});
switch 事件。切换开关组件值时会触发switch 事件,通过form.on(‘switch(filter)’, function(data))代码可以获取该事件并做响应处理。事件处理函数示例及截图如下所示:
form.on('switch()', function(data)
{layer.alert("checked = "+data.elem.checked+ ",value = "+data.value)
});
radio 事件。单击某一单选框会触发radio 事件,通过form.on(‘radio(filter)’, function(data))代码可以获取该事件并做响应处理。事件处理函数示例及截图如下所示:
form.on('radio()', function(data)
{layer.alert("title = "+data.elem.title+",value = "+data.value)
});
表单赋值 / 取值函数。调用表单模块中的form.val(‘filter’, object)函数可以赋值/取值表单元素,如果 object 参数存在,则为赋值;如果 object 参数不存在,则为取值。详细说明请见参考文献2-3,在此不再细说。
参考文献:
[1]B站:layui框架精讲全套视频教程
[2]https://layui.gitee.io/v2/docs/
[3]https://layui.gitee.io/v2/demo/
[4]https://github.com/layui/layui/