欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Layui提交表单时验证必选的多选框是否有选中

程序员文章站 2022-04-14 16:05:22
问题 Layui在表单提交时,会有 是必选的,需要在提交的时候进行验证。 解决方法 1. 在 中添加表单相应内容 2. 在 中进行验证 说明 1. 的命名需要是 ,如上面例子中使用的是 。 2. 是用来获取数据中的键,返回值是一个数组,数组的值为 的键名。 3. 用来获取数组中符合要求的值,传入的是 ......

问题

layui在表单提交时,会有 checkbox 是必选的,需要在提交的时候进行验证。

解决方法

  1. html 中添加表单相应内容
<form action="" method="">
    <!-- checkbox -->
    <input type="checkbox" name="test[]" value="1" title="1">
    <input type="checkbox" name="test[]" value="2" title="2">
    <input type="checkbox" name="test[]" value="3" title="3">
    <input type="checkbox" name="test[]" value="4" title="4">

    <!-- 提交 button -->
    <button type="submit" class="layui-btn" lay-submit layui-filter="filter">提交</button>
</form>
  1. javascript 中进行验证
<script>
    layui.use('form', () => {
        const form = layui.form;
        
        form.on('submit(filter)', (obj) => {
            let data = obj.field;
            
            if (!object.keys(data).filter((x) => { return /^test\[\d+\]&/.test(x) }).length) {
                console.log('请选择');
                return false;
            }
        });
    });
</script>

说明

  1. checkbox 的命名需要是 name + [],如上面例子中使用的是 test[]
  2. object.keys(data) 是用来获取数据中的键,返回值是一个数组,数组的值为 data 的键名。
  3. array.filter() 用来获取数组中符合要求的值,传入的是 callback,返回值是一个数组。上面例子中的函数体是通过正则来进行匹配的,由于 checkboxname 设置为 test[],与正则中的 test 对应,在使用的时候只需要将 test 改为相应的 name 值 即可。
  4. 最后,在验证不通过时,可以使用 return false 来阻止提交。