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

点击layer弹出层按钮实现弹出层中form表单验证前言在使用layui弹出层时,想着在点击弹出层中“确定”按钮时,也能触发弹出层中form表单的验证。最后找到一个还算可以的答案,参考https://fly.layui.com/jie/5581/,结合自己的理解,实现了这个功能。具体实现整体思路就是在弹出层form表单页面中设置一个隐藏的提交按钮,然后在layer弹出层点击“确定”按钮时,找到form表单中隐藏的提交按钮,触发点击事件,…

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

前言

在使用layui弹出层时,想着在点击弹出层中“确定”按钮时,也能触发弹出层中form表单的验证。最后找到一个还算可以的答案,参考https://fly.layui.com/jie/5581/,结合自己的理解,实现了这个功能。

具体实现

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

这里使用的是部门信息html文件:departmentList.html和addDepartment.html。

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

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link th:href="@{~/layui/css/layui.css}" rel="stylesheet"/>
</head>
<body>
    <button class="layui-btn" id="add">
        <i class="layui-icon">&#xe608;</i> 添加
    </button>
    <table id="depOperation" lay-filter="depOperation"></table>

<script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.js"></script>
<script th:src="@{~/layui/layui.js}"></script>
<script type="text/javascript" th:inline="none">
    var rowData;    // 用于接收表格一行数据的全局变量
    layui.use(['table','layer'],function () {
        var table = layui.table;
        var layer = layui.layer;
        // var form = layui.form;
        renderTable();
        function renderTable() {
            table.render({
                elem: '#depOperation',
                height: '350',
                url: '/department/info',
                page: true,
                cols: [
                    [
                        {field: 'dId', title: 'ID', width:200, sort: true, fixed: 'left'},
                        {field: 'dName', title: '部门名称', width:200, edit:'text'},
                        {field: 'dWorktime', title: '上班时间', width:300},
                        {title: '操作', toolbar: '#barDemo'}
                    ]
                ],
                done: function () {     // 隐藏id那一列
                    $("[data-field='dId']").css('display','none');
                }
            });
        }

        // 新增部门
        $('#add').on('click',function () {
            layer.open({
                title: '添加部门',
                type: 2,
                content: './addDepartment',    // 设置跳转的url,跳转到对应的页面
                area: ['400px','400px'],
                btn: ['添加','取消'],
                yes: function (index,layero) {
                    // // 获取弹出层中的form表单元素
                    // var formSubmit=layer.getChildFrame('form', index);
                    // // 提交form表单(不会触发表单验证)
                    // formSubmit.submit();

                    // 获取弹出层中的form表单元素
                    var formSubmit=layer.getChildFrame('form', index);
                    // 获取表单中的提交按钮(在我的表单里第一个button按钮就是提交按钮,使用find方法寻找即可)
                    var submited = formSubmit.find('button')[0];
                    // 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息
                    submited.click();

                    // 弹出层关闭的操作在子层的js代码中完成

                }
            });
        });

        // 监听工具条
        table.on('tool(depOperation)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
            var data = obj.data; //获得当前行数据
            var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)

            // 将监听到的该行数据赋值给父层rowData全局变量,再传到子层中进行操作
            rowData = JSON.stringify(data);

            // 查看该行数据
            if(layEvent === 'detail'){
                layer.open({
                    title: '查看信息',
                    type: 2,
                    content: './showDepartment',    // 设置跳转的url,跳转到对应的页面
                    area: ['400px','400px'],
                    skin: 'layui-layer-lan'         // 蓝色皮肤
                });
            }

            // 编辑该行数据
            if(layEvent === 'edit') {
                layer.open({
                    title: '编辑信息',
                    type: 2,
                    content: './editDepartment',    // 设置跳转的url,跳转到对应的页面
                    area: ['400px','400px'],
                    skin: 'layui-layer-molv',       // 墨绿色皮肤
                    btn: ['提交','取消'],
                    yes: function (index,layero) {
                        // // 获取弹出层中的form表单元素
                        // var formSubmit=layer.getChildFrame('form', index);
                        // // 提交form表单
                        // formSubmit.submit();

                        // 获取弹出层中的form表单元素
                        var formSubmit=layer.getChildFrame('form', index);
                        // 获取表单中的提交按钮(在我的表单里第一个button按钮就是提交按钮,使用find方法寻找即可)
                        var submited = formSubmit.find('button')[0];
                        // 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息
                        submited.click();

                        // 弹出层关闭的操作在子层的js代码中完成

                    }
                });
            }

            // 删除该行数据
            if(layEvent === 'del') {
                layer.confirm("确认删除该行数据?",{btn:['确定','取消'],title:'删除确认'},function () {
                    var dId = data.dId;
                    $.ajax({
                        type: 'post',
                        dataType: 'text',
                        url:  '/department/delDepartment/' + dId,
                        data: {},
                        cache: false,
                        async: true,
                        success: function (data) {
                            var delData = JSON.parse(data);
                            layer.msg(delData.successMsg,{icon:1});
                            // 刷新表格
                            $('.layui-laypage-btn').click();
                        },
                        error: function (data) {
                            var delData = JSON.parse(data);
                            layer.msg(delData.errMsg,{icon:2});
                        }
                    });
                })
            }
        });

    })
</script>

    <!-- 定义表格操作的代码 -->
<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</body>
</html>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link th:href="@{~/layui/css/layui.css}" rel="stylesheet"/>
</head>
<body>
    <form class="layui-form" th:action="@{~/department/addDepartmentSubmit}" method="post">
        <input type="hidden" name="dId">
        <div class="layui-form-item">
            <label class="layui-form-label">部门名称</label>
            <div class="layui-input-inline">
                <input type="text" name="dName" class="layui-input" placeholder="请输入部门名称" required  lay-verify="required|depName">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">上班时间</label>
            <div class="layui-input-inline">
                <input type="text" name="dWorktime" class="layui-input" placeholder="格式:hh:mm:ss" required  lay-verify="required|depWorktime">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <!-- 隐藏提交按钮,在父层中调用 -->
                <button id="addDepartment" class="layui-btn" lay-filter="formVerify" lay-submit style="display: none">添加</button>
            </div>
        </div>
    </form>
<script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.js"></script>
<script th:src="@{~/layui/layui.js}"></script>

<script>
    layui.use(['form'],function () {
        var form = layui.form;
       form.verify({
           depName: function (value,item) { //value:表单的值、item:表单的DOM对象
               if(value.length < 0){
                   return '部门名称不能为空';
               }
           },
           depWorktime: function (value,item) {
               if(value.length < 0){
                   return '请输入上班时间';
               }
               if(! new RegExp("^(([01][1-9])|(2[0-4])):[0-5][0-9]:[0-5][0-9]$").test(value)){
                   return '请按照指定格式输入';
               }
           }
       });
        // 验证成功后才会执行下面的操作
       form.on('submit(formVerify)',function (data) {
           // 提交成功后返回信息,关闭弹出层
           parent.layer.msg('操作成功',{
               icon:1,
               time: 2000
           });

           //当你在iframe页面关闭自身时
           var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
           parent.layer.close(index);

           // 刷新表格(即点击分页控件的“确定”按钮)
           parent.$('.layui-laypage-btn').click();
       });
    });
</script>
</body>
</html>

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

今天的文章点击layer弹出层按钮实现弹出层中form表单验证分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31337.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注