easyui实用点

news2024/9/23 3:20:04

easyui实用点

1.下拉框(input框只能选不能手动输入编辑)

data-options="editable:false"//不可编辑

2.日期框,下拉框,文本框等class

class="easyui-datebox"//不带时分秒
class="easyui-datetimebox"//带时分秒
class="easyui-combobox"//下拉框
class="easyui-textbox"//文本框

3.第一个输入框填写之后第二个设置成必填

1.输入联系人之后 联系电话变成必填

注意:onChange的方法要写到data-options=“onChange:onContactsChange”

 <tr>
                <td class="tdTitle">联系人</td>
                <td style="padding-left: 0.5%">
                    <input class="easyui-textbox" name="contacts" style="width: 99%" data-options="onChange:onContactsChange" />
                </td>
                <td class="tdTitle">联系电话</td>
                <td style="padding-left: 0.5%">
                    <input class="easyui-textbox" name="phone" id="phoneInput" style="width: 99%" data-options="validType:'mobile'" />
                </td>
            </tr>

2.onContactsChange()方法

function onContactsChange() {
    var contactsInput = $('input[name="contacts"]');
    var phoneInput = $('#phoneInput');

    if (contactsInput.val().trim() !== '') {
        phoneInput.textbox('options').required = true;
        phoneInput.textbox('textbox').validatebox({ required: true, validType: 'mobile' });
    } else {
        phoneInput.textbox('options').required = false;
        phoneInput.textbox('textbox').validatebox({ required: false });
    }
}

4.是否必填

data-options="required:true"//普通input框
data-options="multiline:true"//文本框中的必填
missingMessage:'请填写名称'//必填之后的提示语

5.将数据回填到form表中

 $('#customerForm').form('load', row);

6.双击查看详情

  function iconClick(index) {
        //获取指定行的数据,并将其保存到 row 变量中。点击哪一行的数据
        var row = $('#datagrid').datagrid('getRows')[index];
        $('#dialogContainer').dialog({//EasyUI 对话框
            // title: '客商信息详情',
            href: '${ctx}/test15',//引入页面
            split: false,//对话框是否显示分割线
            closed: false,//对话框是否处于关闭状态
            cache: false,//是否缓存对话框的内容
            closable: false,//表示对话框是否可以被关闭
            title: '',//将对话框标题头隐藏
            draggable: false,//用于控制对话框是否可以拖动。
            fit: true, // 将对话框铺满整个屏幕
            onLoad: function () { // 将父节点的分类编码设置到文本框中
                $('#customerForm').form('load', row);//加载数据回写到表单中
                $('#customerForm input').prop('readonly', true); //将所有输入框变只读
                $('#foundTime').datebox('readonly', true);
                $('#notes').textbox('readonly', true);
                $('#submitFormBtn').hide(); // 隐藏保存和返回按钮
                $('#meetName').css('margin-top', '6%'); // 将表格的上边距设置为20px
                $.ajax({//子表信息
                    url: ctx + "/conPayment/selectAll?id=" + row.customerListId,
                    type: "get",
                    success: function (data) {
                        if (data) {
                            // 将 data 的值动态设置到 addRow() 函数中的输入框中
                            addRowInfo(data);
                             // 将所有输入框设置为只读
                            $('#accountTable input').prop('readonly', true);
                        }
                    }
                });
                // $('#form-buttons').hide(); // 隐藏保存和返回按钮
            }
        });
        $("#dialogContainer").dialog('center');//将对话框居中显示。
    }

7.获取子表的输入内容 并且存成list

1.前端表单存

function selectList() {
    var list = [];// 定义一个列表,用于保存输入框的值
    $.each($("#accountTable tbody tr"), function (index, item) {
        list[index] = {
            paymentName: $(this).find("[name=paymentName]").val(),
            bankAccount: $(this).find("[name=bankAccount]").val(),
            bankName: $(this).find("[name=bankName]").val(),
            paymentInfoId: $(this).find("[name=paymentInfoId]").val()
        }
    });
    return JSON.stringify(list);
}

2.前端和主表一起提交

 $('#customerForm').form('submit', {
     url: ctx + "/conCustomerList/customerListSave",
     onSubmit: function (param) {
         param.jsonStr = selectList();//带子表数据一起提交到后台
     },
     success: function (result) {
         if (result) {
             layer.msg('操作成功', {
                 icon: 1,
                 time: 1500,
                 offset: 't',
                 area: '200px'
             }, function () {
                 $('#customerForm').form('clear');
                 $('#dialogContainer').dialog('close');
                 $('#datagrid').datagrid('reload');
             });
         } else {
             layer.msg('操作失败', {
                 icon: 2,
                 time: 1500,
                 offset: 't',
                 anim: 6,
                 area: '200px'
             });
         }
     }
 });

3.后台拿到数据

    /**
     * 正常提交 添加or 保存
     *
     * @param entity
     * @return
     */
    @RequestMapping(value = "/customerListSave")
    @ResponseBody
    public JsonMsg meetSave(ConCustomerList entity, HttpServletRequest request) {
        entity.setIsUse("Y");
        String jsonStr = request.getParameter("jsonStr");
        conCustomerListService.customerListSave(entity, jsonStr);
        return new JsonMsg(true, "操作成功", null);
    }

4.对拿到的数据 进行反序列化 存成实体类

public void customerListSave(ConCustomerList entity, String jsonStr) {
    conCustomerListDao.save(entity);
	//需要hutool包
    List<PaymentInfo> lists = JSONUtil.toList(jsonStr, PaymentInfo.class);
    for (PaymentInfo list : lists) {
        list.setIsUse("Y");
        list.setCustomerListId(entity.getCustomerListId());
    }
    conPaymentInfoDao.saveAll(lists);

}

8.数据列表

$('#datagrid').datagrid({
            url: ctx + "/conCustomerList/selectPageAll?id=" + nodeId + "&search=" + matterName,
            method: 'get',
            pageList: [20, 30, 40],
            pageSize: 20,
            pagination: true,
            singleSelect: true,
            toolbar: '#toolbar',
            toolbarAlign: 'right',
            header: "#toolHeader",
            fit: true, // 将表格大小适应父容器的大小
            width: 1500, // 设置表格的宽度
            scrollbarSize: 20, // 设置滚动条的大小
            scrollbarWidth: 20, // 设置滚动条的宽度
            frozenColumns: [[
                // 其他固定的列定义
                {
                    field: 'id', title: '序号', width: 50, align: 'center', formatter: function (value, row, index) {
                        // 自增序号的 formatter 函数
                        var pageSize = $('#datagrid').datagrid('options').pageSize;
                        return (index + 1) + (pageSize * ($('#datagrid').datagrid('options').pageNumber - 1));
                    }
                },
                {
                    field: 'opt', title: '明细', width: 50, align: 'center',
                    formatter: function (value, row, index) {
                        return '<div οnclick="iconClick(' + index + ')">  <i class="layui-icon" style="font-size: 24px;color: #3399cc">&#xe63c;</i></div>';
                    }
                },
                {field: 'appellation', title: '单位名称/姓名', align: 'center', width: 150}
            ]],
            columns: [[
                {
                    field: 'unitCode',
                    title: '统一单位代码/身份证号码',
                    align: 'center',
                    width: 180,
                    formatter: function (value, row, index) {
                        if (value && value.length == 18) {
                            return value.substr(0, 6) + '******' + value.substr(12, 6);
                        } else {
                            return value;
                        }
                    }
                },
                {field: 'registerPlace', title: '注册地', align: 'center', width: 120},
                {field: 'contacts', title: '联系人', align: 'center', width: 120},
                {field: 'phone', title: '联系电话', align: 'left', width: 120},
                {field: 'customerCode', title: '客商编号', align: 'center', width: 120},
                {
                    field: 'bankAccount',
                    title: '银行行号',
                    align: 'left',
                    width: 400,
                    formatter: function (value, row, index) {
                        return '<span title="' + value + '">' + value + '</span>';
                    }
                }
            ]], onDblClickRow: function (rowIndex, rowData) {
                // 双击行事件处理逻辑
                iconClick(rowIndex);
            }
        });

9.校验表单是否正确

1.电话号码、身份证号等是否正确

输入框中加入data-options=“validType:‘mobile’”

   <td class="tdTitle">联系电话</td>
                <td style="padding-left: 0.5%">
                    <input class="easyui-textbox" name="phone" id="phoneInput" style="width: 99%" data-options="validType:'mobile'" />
                </td>xxxxxxxxxx data-options="validType:'mobile'"   <td class="tdTitle">联系电话</td>                <td style="padding-left: 0.5%">                    <input class="easyui-textbox" name="phone" id="phoneInput" style="width: 99%" data-options="validType:'mobile'" />                </td>

2.js中

$.extend($.fn.validatebox.defaults.rules, {
    mobile: {
        validator: function(value) {
            // 判断手机号格式是否正确
            return /^1[3-9]\d{9}$/.test(value);
        },
        message: '请输入正确的手机号码'
    }
});

10.下拉框设置默认值(是否)

<tr>
    <td style=text-align:right><label>是否内部单位:</label></td>
    <td><input id="isInternalUnit" name="isInternalUnit" style="width: 280px" 			class="easyui-combobox"
		data-options="editable:false,
		value:'2',//默认是否
    	valueField:'value',
        textField:'text',
        panelHeight:'auto',//适应宽度
        data:[
            {value:'1',text:'是'},
            {value:'2',text:'否'},
            ]
    "></td>
</tr>

11.想统计一样 单独单开一个 小窗口(人员选择框 也是同理)

在这里插入图片描述
在这里插入图片描述

1.前端选择有三个小点的按钮

<td><label>决策程序:</label></td>
                <td>
                    <input class="easyui-textbox" style="width: 100%" id="decisionPro">
                    <input id="decisionProId" name="decisionPro" type="hidden" class="easyui-textbox"/>
                </td>

2.盒子

<div id="decisionProbox" class="easyui-dialog" closed="true">
    <div id="decisiondataGrid"></div>
    <div id="adddecisiontools">
        <a href="#" class="easyui-linkbutton" style="height: 23px"
           onclick="chooseSave()">确定</a>
        <a href="#" class="easyui-linkbutton" style="height: 23px"
           onclick="cancelSave()">取消</a>
    </div>
</div>

<div id="toolHeader2" class="tools">
    <input id="searchUserName" prompt="请选择人员名称" style="width:260px" class="easyui-textbox">
    <a href="#" class="easyui-linkbutton" id="searchBtn" iconCls="icon-search" onclick="searchName()">查询</a>
</div>

3.js中 点击三个点按钮触发

$('#decisionPro').textbox({
    required: true,
    buttonAction: "right",
    buttonText: "···",
    onClickButton: function () {
        $("#decisionProbox").dialog({
            title: "会议类型选择  ",
            fid:true,
            maximize: true,
            cache: false,
            buttons: "#adddecisiontools",
            modal: true,
            closed: false,
            onOpen: function () {
                $('#decisiondataGrid').datagrid('reload'); // 重新加载数据
                $(this).dialog('center'); // 将对话框居中显示
            },
            onClose: function () {
                // 获取选中行并取消勾选
                var rows = $('#decisiondataGrid').datagrid('getSelections');
                $.each(rows, function (i, row) {
                    var index = $('#decisiondataGrid').datagrid('getRowIndex', row);
                    $('#decisiondataGrid').datagrid('uncheckRow', index);
                });

                // 根据排序字段对选中的行进行排序
                rows.sort(function (a, b) {
                    return a.sort - b.sort;
                });

                // 将排序后的数据设置回表格中
                $.each(rows, function (i, row) {
                    var index = $('#decisiondataGrid').datagrid('getRowIndex', row);
                    $('#decisiondataGrid').datagrid('updateRow', {
                        index: index,
                        row: {
                            sort: row.sort  // 只修改排序字段的值,不修改名称
                        }
                    });
                });
            }
        });

    }
});

4.数据加载

var ed;
$('#decisiondataGrid').datagrid({
    toolbar: "#toolHeader2",
    url: ctx + "/meetUser/findAll",
    method: 'get',
    fitColumns: true,
    pageList: [5, 10, 15],
    pagesize: 5,
    pagination: true,
    width: 700,
    height: 250,
    singleSelect: false,
    onSelectAll:function (rows){
        $.each(rows,function (index,value) {
            $('#decisiondataGrid').datagrid('beginEdit',index);
        })
    },
    onUnselectAll: function () {
        var rows = $('#decisiondataGrid').datagrid('getRows');
        $.each(rows, function (index, row) {
            $('#decisiondataGrid').datagrid('endEdit', index);
        });
        $('#decisiondataGrid').datagrid('reload'); // 刷新数据表格
    },
    onClickRow: function(index, row) {
        // 检查是否单击了勾选框
        var ck = $(this).datagrid('getChecked');
        var isCheck = false;
        for (var i = 0; i < ck.length; i++) {
            if (ck[i].id === row.id) {
                isCheck = true;
                break;
            }
        }
        // 如果单击了勾选框,则开始编辑该行
        if (isCheck) {
            $('#decisiondataGrid').datagrid('beginEdit', index);
            ed=$(this).datagrid('getEditor', {index: index, field: 'sort'});
        }else{
            $('#decisiondataGrid').datagrid('reload'); // 刷新数据表格
        }

    },
    columns: [[
        {
            field: 'id', title: '序号', width: 20, align: 'center', formatter: function (value, row, index) {
                // 自增序号的 formatter 函数
                var pageSize = $('#decisiondataGrid').datagrid('options').pageSize;
                return (index + 1) + (pageSize * ($('#decisiondataGrid').datagrid('options').pageNumber - 1));
            }
        },
        {field: 'checked', title: '勾选框', checkbox: 'multiple'},
        {field: 'meetingName', title: '会议类型名称', width: 60, align: 'center', halign: 'center'},
        {field: 'sort', title: '排序', width: 35, align: 'center', halign: 'center',
            editor: {
                type: 'numberbox',
                options: {
                    required: true,
                    precision: 0
                }
            }
        },
        {field: 'meetingId', title: '会议类型编号', width: 0, hidden: true}
    ]]
});

12.设置值

  $('#endTime').textbox('setValue', i.endTime);//文本框设置值
 $("input[name='state'][value='1']").prop("checked", true);//单选框通过name设置选中

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

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

相关文章

口碑+丨香港邮政联合极智嘉建立全港首个机器人邮包分拣系统

近日&#xff0c;香港邮政与全球仓储机器人引领者极智嘉(Geek)在其中央邮件中心联手建立全港首个机器人包裹分拣系统。该全新系统采用极智嘉分运结合解决方案&#xff0c;每小时可处理达1,000个邮包&#xff0c;助力香港邮政利用创新科技简化邮包分拣流程、提升工作效率&#x…

allwinner 全志RS485调试,GPIO状态与万用表测量不同

全志RS485调试 思路&#xff1a;UART驱动中已经将485流控功能加进去了&#xff0c;所以我们只需要根据硬件原理图配置一下485脚的GPIO就行了。 硬件原理图&#xff1a; 将UART3 UART4的RTS脚配置为485流控脚就行&#xff0c; RX和TX不需要配置&#xff0c;在pinctrol已经配置好…

热风梳C22.2 NO.3亚马逊加拿大审核标准

加拿大是目前亚马逊所有站点中&#xff0c;商业规模大、发展势头迅猛的站点之一。亚马逊加拿大站每月吸引近1600万访客。其优势在于在加拿大&#xff0c;目前平台的竞争较小&#xff0c;商家容易出单。既然加拿大站有这么多优势&#xff0c;那产品上架需要有哪些检测认证合规方…

[MAUI 项目实战] 手势控制音乐播放器: 手势交互

原理 定义一个拖拽物&#xff0c;和它拖拽的目标&#xff0c;拖拽物可以理解为一个平底锅&#xff08;pan&#xff09;&#xff0c;拖拽目标是一个坑&#xff08;pit&#xff09;&#xff0c;当拖拽物进入坑时&#xff0c;拖拽物就会被吸附在坑里。可以脑补一下下图&#xff1…

腾讯地图点标记加调用

先看效果 PHP代码 <?phpnamespace kds_addons\edata\controller;use think\addons\Controller; use think\Db;class Maps extends Controller {// 经纬度计算面积function calculate_area($points){$totalArea 0;$numPoints count($points);if ($numPoints > 2) {…

Qt、Qt Creator下载、安装

一、Qt、Qtcreator简介 Qt是一个跨平台应用开发框架。 Qt Creator是一个跨平台的集成开发环境&#xff08;IDE&#xff09;&#xff0c;集成了Qt所提供的功能&#xff0c;可以单独下载使用&#xff0c;也可以结合Qt组合使用。 二、下载 下载地址&#xff1a;https://downloa…

2023 ChinaJoy | 移远通信携手高通,共创数字娱乐新体验

当前&#xff0c; 5G、AI、大数据等智能创新技术正以惊人的速度蔓延至越来越多的领域&#xff0c;从智能家居、智能交通、智能医疗到智能制造&#xff0c;改变了我们的工作和生活方式。 而在数字娱乐领域&#xff0c;智能创新技术也展现出了巨大的潜力。作为全球领先的物联网整…

13.5.5 【Linux】其他相关文件

除了前一小节谈到的 /etc/securetty 会影响到 root 可登陆的安全终端机&#xff0c; /etc/nologin 会影响到一般使用者是否能够登陆的功能之外&#xff0c;我们也知道 PAM 相关的配置文件在 /etc/pam.d &#xff0c;说明文档在 /usr/share/doc/pam-&#xff08;版本&#xff09…

牛客网Verilog刷题——VL47

牛客网Verilog刷题——VL47 题目答案 题目 实现4bit位宽的格雷码计数器。 电路的接口如下图所示&#xff1a; 输入输出描述&#xff1a; 信号类型输入/输出位宽描述clkwireIntput1时钟信号rst_nwireIntput1异步复位信号&#xff0c;低电平有效gray_outregOutput4输出格雷码计数…

管理ceph集群

文章目录 ceph的常用命令查看集群状态查看pg的状态查看mon节点状态查看osd的通用命令查看osd的容量查看osd池写入文件测试查看池的属性查看文件映射过程 添加磁盘删除磁盘 ceph的常用命令 查看集群状态 ceph osd pool application enable pool-name rbd #将池启用rbd功能 ceph…

Java集合框架-List、Set、Map

一、Java集合框架概述&#xff1a; 1.1 Collection接口继承树 JDK提供的集合API位于java.util包内。 Map接口继承树 1.2 Collection接口方法 Collection 接口 Collection 接口是 List、Set 和 Queue 接口的父接口&#xff0c;该接口里定义的方法既可用于操作 Set 集合&#…

Matlab进阶绘图第24期—悬浮柱状图

悬浮柱状图是一种特殊的柱状图。 与常规柱状图相比&#xff0c;悬浮柱状图可以通过悬浮的矩形展示最小值到最大值的范围&#xff08;或其他范围表达&#xff09;&#xff0c;因此在多个领域得到应用。 本文使用自己制作的Floatingbar小工具进行悬浮柱状图的绘制&#xff0c;先…

【Linux】Linux项目自动化构建工具 make/Makefile

目录 1. Makefile 是如何工作的 2. 依赖关系与依赖方法 3. .PHONY 4. Makefile 的特殊符号 写在最后&#xff1a; 1. Makefile 是如何工作的 make 是一个命令。 Makefile 是一个文件&#xff0c;当前目录下的一个文件。 我们先来上手写一个简单的 Makefile 文件&#…

火山引擎AB测试:广告实验深度打通巨量引擎,高效测试广告素材

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近期&#xff0c;火山引擎AB测试DataTester上线了新版的广告AB实验&#xff0c;还推出了与巨量引擎深度打通的能力。用户可以在DataTester中直接进行广告落地页的创…

机器学习:异常检测

问题定义 anomaly&#xff0c;outlier&#xff0c; novelty&#xff0c; exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据&#xff0c;而异常的数据的范围非常广的话&#xff08;无法穷举&#xff09;&#xff0c;二分类这些不好做。另外就…

没钱,没人,没IT,如何成功进行数字化转型?

在数字化时代的浪潮下&#xff0c;技术的迅猛发展为企业和个人带来了前所未有的机遇和挑战。然而&#xff0c;传统的软件开发过程通常需要大量的编程工作&#xff0c;对于非技术背景的人士而言&#xff0c;这是一座高不可攀的技术门槛。如何能够快速地实现创新&#xff0c;推动…

YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject

9 | PyYAML源码之emit&#xff0c;dump&#xff0c;safe_dump&#xff0c;yaml.YAMLObject 1 yaml.dump()2 yaml.dump()3 yaml.safe_dump4 yaml.YAMLObject 1 yaml.dump() 源码&#xff1a; 作用&#xff1a; 将Python对象序列化为YAML流。如果stream为None&#xff0c;则返…

无涯教程-jQuery - Tooltip组件函数

小部件工具提示功能可与JqueryUI中的小部件一起使用。Tooltip用于显示提示。 Tooltip - 语法 $( document ).tooltip(); Tooltip - 示例 以下是显示工具提示用法的简单示例- <!doctype html> <html lang"en"><head><meta charset"utf…

【腾讯云 Cloud Studio 实战训练营】在Cloud Studio上使用React实现学生管理系统

一、前言 为了提升办公效率&#xff0c;越来越多的人开始使用云工作站的方法进行“云办公”了&#xff0c;所谓云办公即把传统意义办公场所转移到网络浏览器中&#xff0c;这样做的好处有&#xff1a; 实现真正的移动化办公&#xff0c;不再受设备、时间、地点等的束缚&#…

最近写了10篇Java技术博客【SQL和画图组件】

&#xff08;1&#xff09;Java获取SQL语句中的表名 &#xff08;2&#xff09;Java SQL 解析器实践 &#xff08;3&#xff09;Java SQL 格式化实践 &#xff08;4&#xff09;Java 画图 画图组件jgraphx项目整体介绍&#xff08;一&#xff09; 画图组件jgraphx项目导出…