Layui——隐藏表单项后不再进行验证

news2024/11/24 14:44:00

目录

修改后的部分代码

修改后的完整代码 


  • 我编辑用户信息和添加新用户用的是同一个表单,不同的是编辑用户信息里没有密码项和确认密码项,但是把它们隐藏后仍然要进行验证,也就是说它们俩的验证并没有随着表单项的隐藏而关闭。
  • 原因:关闭不彻底,一共有两步。隐藏表单项的同时,需要把表单项里的 lay-verify 属性改为空

修改后的部分代码

修改后的完整代码 

<!DOCTYPE html>
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %>
<%@ include file="../common/taglibs.jsp" %>

<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <%@ include file="../common/meta.jsp" %>
</head>
<body>
<div class="layui-btn-group layui-row" id="btn_group">
    <button type="button" class="layui-btn" data-method="addUser">添加账号</button>
</div>
<table class="layui-hide" id="userTable"></table>
</body>
<div hidden id="addUser">
    <form class="layui-form" action="" lay-filter="addUserForm" id="addUserForm">
        <div class="layui-form-item">
            <label class="layui-form-label">真实姓名</label>
            <div class="layui-input-block">
                <input type="text" name="realname" required  lay-verify="required" autocomplete="off" class="layui-input">
                <input type="text" name="id" hidden>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">用户名</label>
            <div class="layui-input-block">
                <input type="text" name="username" required  lay-verify="required" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item"  lay-filter="userPaword" id="userPaword">
        <label class="layui-form-label">密码</label>
            <div class="layui-input-block">
                <input type="password" name="paword" required  lay-verify="required" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item" lay-filter="confirmPaword" id="confirmPaword">
            <label class="layui-form-label">确认密码</label>
            <div class="layui-input-block">
                <input type="password" lay-verify="required|confirmPass" autocomplete="off" placeholder="确认密码"  class="layui-input">
            </div>
        </div>
        <div>
            <button type="button" data-method="addUser" lay-filter="formVerify" lay-submit style="display: none">提交新用户表单或修改后的用户表单</button>
        </div>
    </form>
</div>
<div hidden id="editPaword">
    <form class="layui-form" action="" lay-filter="editPawordForm" id="editPawordForm">
        <div class="layui-form-item"  lay-filter="paword">
            <label class="layui-form-label">密码</label>
            <div class="layui-input-block">
                <input type="text" name="paword" required  lay-verify="required" autocomplete="off" class="layui-input">
                <input type="text" name="id" hidden>
            </div>
        </div>
        <div class="layui-form-item" lay-filter="conformPaword">
            <label class="layui-form-label">确认密码</label>
            <div class="layui-input-block">
                <input type="password"  lay-verify="required|confirmPass" autocomplete="off" placeholder="确认密码"  class="layui-input">
            </div>
        </div>
        <div>
            <button type="button" data-method="editPaword" lay-filter="passwordVerify" lay-submit style="display: none">提交修改后的密码</button>
        </div>
    </form>
</div>
<script>
    layui.use(['table','layer','form','laydate'], function() {
        var table = layui.table;
        var layer = layui.layer;
        var $ = layui.$;
        var form = layui.form;
        var user={};
        form.verify({
            confirmPassword: function(value) {
                if($('input[name=paword]').val() !== value){
                    return "两次输入的密码不一致!";
                }
            }
        });
        var userTable =  table.render({
            elem: '#userTable'
            ,url:'/user/list'
            ,method:"post"
            ,data: JSON.stringify(user)//传递json类型的参数
            ,contentType: 'application/json'
            ,cellMinWidth: 100 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
            ,cols: [[
                {field:'username', width:200, title: '用户名', sort: true}
                ,{field:'realname', width:200, title: '真实姓名', sort: true}
                ,{field:'lastLogineTime', width:200, title: '上次登录时间', sort: true}
                ,{field:'createtime', width:200, title: '创建时间', sort: true}
                ,{width:300, title: '操作',templet:function(d){
                        return '<button type="button" class="layui-btn layui-btn-sm singleBtn" data-method="editUser" data-id="'
                            +d.id+'"><i class="layui-icon layui-icon-edit"/></button>'
                            +'<button type="button" class="layui-btn layui-btn-sm singleBtn" data-method="editPaword" data-id="'
                            +d.id+'"><i class="layui-icon layui-icon-key" /></button>'
                            +'<button type="button" class="layui-btn layui-btn-sm singleBtn" data-method="deleteUser" data-id="'
                            +d.id+'"><i class="layui-icon layui-icon-delete"/></button>'
                    }}
            ]],
            parseData: function(res){ //res 即为原始返回的数据
                return res
            },
            done: function(res, curr, count){
                //如果是异步请求数据方式,res即为你接口返回的信息。
                //如果是直接赋值的方式,res即为:{data: [], count: 99} data为当前页数据、count为数据总长度
                console.log(res);
                //得到当前页码
                console.log(curr);
                //得到数据总量
                console.log(count);
                $('.singleBtn').on('click', function(){
                    var othis = $(this), method = othis.data('method');
                    active[method] ? active[method].call(this, othis) : '';
                });
            },
            page: true
        });
        function layerForm(){
            //多窗口模式,层叠置顶
            layer.open({
                type: 1
                , title: '添加账号'
                , content: $('#addUser')
                , btn: ['保存', '取消'] //只是为了演示
                , area: ['600px', '300px'] //宽高
                ,closeBtn: 0
                ,success: function (layero, index) { // 弹出层打开后的回调函数
                    layero.addClass('layui-form'); // 为弹出层添加 `layui-form` 类
                    layero.find('.layui-layer-btn0').attr({ // 修改“保存”按钮的属性
                        'lay-filter': 'formVerify', // 添加 lay-filter 属性,设置为 'formVerify'
                        'lay-submit': '' // 添加 lay-submit 属性,启用 layui 表单提交功能
                    });
                    form.render(); // 渲染表单
                }
                , yes: function () {
                    form.on('submit(formVerify)', function (data) { // 绑定表单提交事件
                        var formData = form.val('addUserForm');//form lay-filter属性
                        console.log(formData);
                        var layerui = layer;
                        $.ajax({
                            url: "/user/add",
                            type: "POST",
                            data: JSON.stringify(formData),//传递json类型的参数
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function (result) {
                                if(result.code == COMMON_SUCCESS_CODE){
                                    layerui.msg('操作成功');
                                    userTable.reload()
                                }else{
                                    layerui.alert('操作失败', {icon: 2});
                                }
                                layerui.closeAll();
                                $("#addUserForm")[0].reset();
                                form.render();
                            }
                        })

                    })
                }
                , btn2: function () {
                    layer.closeAll();
                    $("#addUserForm")[0].reset();
                    form.render();
                }
            });
        }
        //触发事件
        var active = {
            addUser: function () {
                var that = this;
                layerForm();
            },
            editUser:function(){
                var othis = $(this), dataId = othis.data('id');
                $("#userPaword").hide();
                $("#confirmPaword").hide();
                $('#userPaword input').attr('lay-verify', ''); // 添加lay-verify属性,进行表单验证
                $('#confirmPaword input').attr('lay-verify', '');
                $.ajax({
                    url: "/user/search/"+dataId,
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    success: function (result) {
                        if(result.code == COMMON_SUCCESS_CODE){
                            var user = result.data;
                            //给表单赋值
                            form.val("addUserForm", {
                                "username": user.username,
                                "realname": user.realname,
                                "id": user.id
                            });
                            layerForm();
                        }else{
                            layer.alert('数据获取失败', {icon: 2});
                        }
                    }
                });
            },
            editPaword: function () {
                var othis = $(this), dataId = othis.data('id');
                //多窗口模式,层叠置顶
                layer.open({
                    type: 1
                    , title: '修改密码'
                    , content: $('#editPaword')
                    , btn: ['保存', '取消'] //只是为了演示
                    , area: ['600px', '300px'] //宽高
                    ,closeBtn: 0
                    ,success: function (layero, index) { // 弹出层打开后的回调函数
                        layero.addClass('layui-form'); // 为弹出层添加 `layui-form` 类
                        layero.find('.layui-layer-btn0').attr({ // 修改“保存”按钮的属性
                            'lay-filter': 'passwordVerify', // 添加 lay-filter 属性,设置为 'formVerify'
                            'lay-submit': '' // 添加 lay-submit 属性,启用 layui 表单提交功能
                        });
                        form.render(); // 渲染表单
                    }
                    , yes: function () {
                        form.on('submit(passwordVerify)', function (data) { // 绑定表单提交事件
                            var formData = form.val('editPawordForm');//form lay-filter属性
                            console.log(formData);
                            var layerui = layer;
                            $.ajax({
                                url: "/user/editPaword/"+dataId,
                                type: "POST",
                                data: JSON.stringify(formData),//传递json类型的参数
                                contentType: "application/json; charset=utf-8",
                                dataType: "json",
                                success: function (result) {
                                    if(result.code == COMMON_SUCCESS_CODE){
                                        layerui.msg('操作成功');
                                        userTable.reload()
                                    }else{
                                        layerui.alert('操作失败', {icon: 2});
                                    }
                                    layerui.closeAll();
                                    $("#editPawordForm")[0].reset();
                                    form.render();
                                }
                            })
                        })
                    }
                    , btn2: function () {
                        layer.closeAll();
                        $("#editPawordForm")[0].reset();
                        form.render();
                    }
                });
            },
            deleteUser: function(){
                var othis = $(this), dataId = othis.data('id');
                layer.confirm('确定删除?', {
                    btn: ['确定', '取消'] //可以无限个按钮
                    ,yes: function(index, layero){
                        var layDelete  = layer;
                        $.ajax({
                            url: "/user/delete/"+dataId,
                            type: "DELETE",
                            contentType: "application/json; charset=utf-8",
                            success: function (result) {
                                if(result.code == COMMON_SUCCESS_CODE){
                                    userTable.reload()
                                }else{
                                    layer.alert('删除失败', {icon: 2});
                                }
                                layDelete.closeAll();
                            }

                        })

                    }, btn2: function(index, layero){
                        layer.closeAll();
                    }});
            }
        }
        $('#btn_group .layui-btn').on('click', function(){
            var othis = $(this), method = othis.data('method');
            active[method] ? active[method].call(this, othis) : '';
        });
    })
</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阴阳脚数码管

1.小故事 最近&#xff0c;我接到了一个既“清肺”又“烧脑”的新任务&#xff0c;设计一个低功耗蓝牙肺活量计。在这个项目中我们借鉴了一款蓝牙跳绳的硬件设计方案&#xff0c;特别是它的显示方案——数码管。 在电子工程领域&#xff0c;初学者往往从操作LED开始&#xff…

JavaSE 网络编程

什么是网络编程 计算机与计算机之间通过网络进行数据传输 两种软件架构 网络编程3要素 IP IPv4 IPv6 Testpublic void test01() throws UnknownHostException { // InetAddress.getByName 可以是名字或ipInetAddress address InetAddress.getByName("LAPTOP-7I…

混剪素材哪里下载?网盘格式的素材网站分享

在今天的文章中&#xff0c;我们将深入探讨如何在互联网上寻找高质量的混剪素材&#xff0c;尤其是对于短视频和自媒体制作者来说&#xff0c;寻找合适的素材至关重要。在本文中&#xff0c;我将向大家推荐一系列优秀的素材下载网站&#xff0c;这些网站提供可以直接下载到百度…

Java入门基础16:集合框架1(Collection集合体系、List、Set)

集合体系结构 Collection是单列集合的祖宗&#xff0c;它规定的方法&#xff08;功能&#xff09;是全部单列集合都会继承的。 collection集合体系 Collection的常用方法 package com.itchinajie.d1_collection;import java.util.ArrayList; import java.util.HashSet;/* * 目…

分布式事务和一致性

分布式事务是什么&#xff1f; 分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理&#xff0c;这些数据库或应用程序可能 布在不同的物理节点上&#xff0c;甚至可能位于不同的地理位置&#xff0c;在分布式事务中&#xff0c;需要确保所有参与者的事…

C++ 之动手写 Reactor 服务器模型(一):网络编程基础复习总结

基础 IP 地址可以在网络环境中唯一标识一台主机。 端口号可以在主机中唯一标识一个进程。 所以在网络环境中唯一标识一个进程可以使用 IP 地址与端口号 Port 。 字节序 TCP/IP协议规定&#xff0c;网络数据流应采用大端字节序。 大端&#xff1a;低地址存高位&#xff0c…

[陇剑杯 2021]wifi WP

9.1小王往upload-labs上传木马后进行了cat /flag&#xff0c;flag内容为_____________。&#xff08;压缩包里有解压密码的提示&#xff0c;需要额外添加花括号&#xff09; 附件信息&#xff1a; 拿到附件 先看服务器.pcapng 可以发现只有发出去的包&#xff0c;且为哥斯…

Golang实现简单的HTTP服务,响应RESTful请求判断形状大小

题目要求&#xff1a; 题目 1.shape 接口有面积Area() float64和 周长Perimeter()fioat64 两个法。为Circle Rectangle实现shape 接口。 2.实现isGreater(shape1&#xff0c;shape2 shape)boo1 函数&#xff0c;用于比较两个形状的大小,并使用单元测试验证 3.实现http.Handle…

反常识心理学——受助者恶意 / 如何防备受助者恶意的发生

原创 大渔 大渔大师课 贯穿电影《消失的她&#xff08;2013年上映&#xff09;》中全片的两个反常识心理学效应&#xff1a;曼德拉效应、受助者恶意。 「被篡改的记忆—曼德拉效应 」 何非与妻子去国外旅行&#xff0c;妻子却离奇失踪&#xff0c;正在何非焦急寻找之时&…

根据字典值回显,有颜色的

背景 本项目以若依前端vue2版本为例&#xff0c;项目中有根据字典值回显文本的函数selectDictLabel&#xff0c;但是有时候我们需要带颜色的回显&#xff0c;大概这样的 用法 <template v-slotscope><dict-label :options"dangerLevelOptions" :value&qu…

2024年办公协作新趋势:8种值得瞩目的工作方式

过去两年中&#xff0c;疫情的爆发推动了远程办公业务的发展&#xff0c;并且随着疫情的常态化和企业数字化转型的加速&#xff0c;中国企业对协作办公软件的需求显著增加。数据显示&#xff0c;2021年中国协作办公市场规模已达264.2亿元&#xff0c;预计到2023年将增长至330.1…

Asymmetric Loss For Multi-Label Classification

从b站视频区看到的一篇论文&#xff0c;来自阿里。据他所说&#xff0c;他的多标签分类数据长尾最大到100:1&#xff0c;再做增广也没用&#xff0c;用了这篇论文的loss直接起飞。 链接在此 首先&#xff0c;常规的loss 既然是多标签分类&#xff0c;那么最基础的方法肯定是…

《探索 Unity 开发:创新与挑战》

《探索 Unity 开发&#xff1a;创新与挑战》 在当今的游戏开发和虚拟现实领域&#xff0c;Unity 已经成为了一款备受青睐的引擎。它的强大功能和灵活性&#xff0c;为开发者们提供了无限的创作可能。在这篇博客中&#xff0c;我们将深入探讨 Unity 开发的各个方面&#xff0c;包…

HarmonyOS应用二之代办事项案例

目录&#xff1a; 1、代码分析2、ArkTS的基本组成3、重点扩展 1、代码分析 1.1代码&#xff1a; 在鸿蒙&#xff08;‌HarmonyOS&#xff09;‌的ArkTS框架中&#xff0c;‌aboutToAppear() 是一个自定义组件的生命周期函数&#xff0c;‌它在组件即将显示时被系统自动调用1。…

生信入门:序列比对之ncbi_blast在线使用

1.背景 blast作为一种序列相似性比对工具&#xff0c;是生物信息分析最常用的一款软件&#xff0c;必须掌握。不管是做两序列相似性的简单比对&#xff0c;还是引物特异性、序列的来源等个性化分析&#xff0c;都会用到blast比对。许多看似高大上的基因分析&#xff0c;都可归…

1688商品详情API返回值中的物流与配送信息

在阿里巴巴1688平台上&#xff0c;商品详情API的返回值通常会包含丰富的商品信息&#xff0c;但具体到“物流与配送信息”这部分&#xff0c;它可能不直接包含在API的标准返回字段中&#xff0c;因为物流和配送信息往往与订单处理、库存状态以及物流服务商的实时数据相关联&…

探索Linux -- 冯诺依曼体系、初始操作系统、初始进程、fork函数

一、冯诺依曼体系结构 1、概念 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 最早的计算机器仅内含固定用途的程序。若想要改变此机器的程序&#xff0c;就必须更改线路、更改结构甚至重新设计此机器。当然最早的计…

安卓应用开发学习:查看手机传感器信息

一、引言 在手机app的开发中经常会用到手机的传感器&#xff0c;在《Android App 开发进阶与项目实战》一书的第10章就介绍了传感器的一些功能和用法。要想使用传感器&#xff0c;首先得知道手机具备哪些传感器。书中有传感器类型取值的说明&#xff0c;并提供了一个查看手机传…

vulnhub系列:DC-9

vulnhub系列&#xff1a;DC-9 靶机下载 一、信息收集 nmap扫描存活&#xff0c;根据mac地址寻找IP nmap 192.168.23.0/24nmap扫描IP 端口等信息 nmap 192.168.23.144 -p- -sV -Pn -O访问80端口 dirsearch目录扫描 python3 dirsearch.py -u http://192.168.23.144/页面查看…

8.12-基于gtids的主从复制搭建+lvs

一、LVS 1.角色 主机名ip地址功能web01192.168.2.101rsweb02192.168.2.102realserveenat内网:192.168.2.103 外网:192.168.2.120directorserver,ntpdns192.168.2.105dns 2..web服务器 [rootweb01 ~]# yum -y install nginx ​ [rootweb01 ~]# echo "web01" > …