点击layer.open弹出层按钮实现弹出层中form表单验证

前言

在使用layui弹出层时,想着在点击弹出层中“确定”按钮时,也能触发弹出层中form表单的验证。

具体实现

整体思路就是在弹出层form表单页面中设置一个隐藏的提交按钮,然后在layer弹出层点击“确定”按钮时,找到form表单中隐藏的提交按钮,触发点击事件,即可实现验证功能。

这里使用的是两个测试HTML:list.html和add.html。

重点查看新增部门的js代码段和form表单中设置的隐藏提交按钮即可。

  1. list.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>demo</title>
    <link rel="stylesheet" href="../../lib/layuiadmin/layui/css/layui.css" media="all">
    <style>
        body {
            margin: 10px;
        }

        .demo-carousel {
            height: 200px;
            line-height: 200px;
            text-align: center;
        }
    </style>
</head>
<body>
<div class="demo">
    <button type="button" class="layui-btn layui-btn-primary" @click="add">按钮验证</button>
</div>

<script src="../../lib/jquery/jquery-2.0.1.min.js"></script>
<script src="../../lib/vue/vue.min.js"></script>
<script src="../../lib/layuiadmin/layui/layui.js"></script>
<script>
    layui.use('layer');
    var vue = new Vue({
        el: '.demo',
        data() {
            return {}
        },
        methods: {
            add:function () {
                var index = layer.open({
                    type: 2,
                    content: './add.html',
                    area: ['600px', '800px'],
                    btn: ['保存', '取消'],
                    yes: function (index, layero) {
                        var formSubmit=layer.getChildFrame('form', index);
                        var submited = formSubmit.find('button')[0];
                        // 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息
                        submited.click();
                    },
                    cancel: function (index, layero) {
                        //取消事件
                    },
                    end: function () {
                        //无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。layer.open关闭事件
                    }
                });
            }
        },
        mounted:function () {

        }
    });
</script>
</body>
</html>
  1. add.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>demo</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../lib/layuiadmin/layui/css/layui.css" media="all">
    <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>

<form class="layui-form demo" action="">
    <div class="layui-form-item">
        <label class="layui-form-label">单行输入框</label>
        <div class="layui-input-block">
            <input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题"
                   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="username" lay-verify="required" lay-reqtext="用户名是必填项,岂能为空?" placeholder="请输入"
                   autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button type="submit" style="display: none" class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
        </div>
    </div>
</form>


<script src="../../lib/jquery/jquery-2.0.1.min.js"></script>
<script src="../../lib/vue/vue.min.js"></script>
<script src="../../lib/layuiadmin/layui/layui.js"></script>
<script>
    layui.use('layer');
    var vue = new Vue({
        el: '.demo',
        data() {
            return {}
        },
        methods: {
            save: function () {
                // 提交代码
            }
        },
        mounted: function () {
            layui.use(['form', 'layedit', 'laydate'], function () {
                var form = layui.form
                    , layer = layui.layer;
                //自定义验证规则
                form.verify({
                    title: function (value) {
                        if (value.length < 5) {
                            return '标题至少得5个字符啊';
                        }
                    }
                    , pass: [
                        /^[\S]{6,12}$/
                        , '密码必须6到12位,且不能出现空格'
                    ]
                    , content: function (value) {
                        layedit.sync(editIndex);
                    }
                });
                form.on('submit(demo1)', function (data) {
                    return false;
                });

            });
        }
    });
</script>
</body>
</html>

这样就能实现具体的表单验证了。

  1. 看看效果
    效果
# code   js   前端  

评论

企鹅群:39438021

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×