themleaf 页面弹层取值

themleaf 页面弹层取值

  • 创作背景
  • themleaf页面事件
    • onblur
    • onclick
  • 页面参数提交

创作背景

个人在日常开发中,遇到了一个需求页面,页面交互较多,用到的事件也很丰富,特此记录,方便后续查找也方便有需要的开发者采用,本文涉及项目所用架构为开源的若依架构。

themleaf页面事件

onblur

离焦事件,页面输入框输入手机号离焦后触发ajax请求后台自动获取官网用户名并赋值在页面上,页面如图
在这里插入图片描述
页面代码

<div class="form-group">  <label class="col-sm-3 control-label"><span style="color: red;">*  </span>学员手机号:</label><div class="col-sm-8"><input id="phone" name="phone" class="form-control" type="text" onblur="getGwUserName();" placeholder="员工填写,必填"></div></div>

离焦事件触发方法getGwUserName()获取后台数据并返回重写在页面,getGwUserName()方法详情

//获取官网用户名function getGwUserName() {var phone = $("#phone").val().trim();if (checkNull(phone)) {$.ajax({type: "POST",url: prefix + "/getGwUserName",dataType: 'json',data: {phone: phone},success: function (result) {if (result.code == web_status.SUCCESS) {var data = result.data;$("#gwUserName").val(data.userName);//放置memberId用户后面从元数据获取官网订单信息$("#memberId").val(data.memberId);}else {$.modal.alertWarning("未获取到官网用户名,请手动输入");}}});}}

onclick

页面点击事件,这里点击添加在当前容器后拼接新的输入框内容
在这里插入图片描述
页面代码

<h3 style="float: left;padding-right: 100px;">官网抵扣商品信息</h3><button type="button" class="btn btn-w-m btn-primary" onclick="addgw();">添加</button><hr><div id="container"></div><h3>天猫成单信息</h3><hr>

点击事件触发方法addgw()往容器追加代码,可以多次点击添加内容,因此需要记录点击号clicknum用于动态化id,方便后续处理业务逻辑;addgw()方法内容

//点击添加按钮var clicknum = 0;function addgw() {var memberId = $("#memberId").val();if (checkNull(memberId)) {var html = '<div class="gwdetail">';html += '<div class="form-group"><label class="col-sm-3 control-label">订单号:</label><div class="col-sm-8"><input type="text" name="orderNo" id="orderNo'+clicknum+'" class="form-control" readonly onclick="getMetaOrders('+clicknum+');"/><input type="hidden" name="metaOrderId" id="metaOrderId'+clicknum+'"/></div></div>';html += '<div class="form-group"><label class="col-sm-3 control-label">抵扣商品:</label><div class="col-sm-8"><select name="deductionGoodsIds" class="form-control select2-multiple" multiple><option value="">请选择</option></select><button type="button" class="btn btn-w-m btn-primary" onclick="judgeRefund('+clicknum+');">关课/退款</button></div></div>';html += '<div class="form-group"><label class="col-sm-3 control-label">支付金额:</label><div class="col-sm-8"><input name="gwPaymentAmount" class="form-control" type="text"></div></div>\n';html += '<div class="form-group"><label class="col-sm-3 control-label">商品是否关课:</label><div class="col-sm-8"><select name="closeClass" class="form-control"><option value="">请选择</option><option value="0"></option><option value="1"></option></select></div></div>';html += '<div class="form-group"><label class="col-sm-3 control-label">抵扣商品是否有退款:</label><div class="col-sm-8"><select name="gwDrawback" class="form-control"><option value="">请选择</option><option value="0"></option><option value="1"></option></select></div></div>';html += '<div class="form-group"><label class="col-sm-3 control-label">抵扣金额:</label><div class="col-sm-8"><input name="deductionAmount" class="form-control" type="text"></div></div><div>---------------------------------------------------------------------</div></div>';$("#container").append(html);$("select[name='deductionGoodsIds']").select2();clicknum ++;}else {$.modal.alertWarning("请先填写学员手机号");}}

在addgw()添加页面属性中onclick方法getMetaOrders(‘+clicknum+’)主要是负责跳转到弹层列表页,选择相应的订单号点击确定之后再返回当前弹层页面;

//分页获取当前memberId下订单信息function getMetaOrders(num) {var memberId = $("#memberId").val();//var memberId = 34763975;$.modal.open("订单号", prefix + "/getMetaOrders?memberId="+memberId+"&clicknum="+num);}//官网抵扣商品是否关课/退款function judgeRefund(num) {var $1 = $('#orderNo'+num+'');var parent = $1.parent().parent().parent();var orderNo = $1.val();var goodsIds = parent.find("select[name='deductionGoodsIds']").val().toString();//console.log("orderno:"+orderNo);//console.log("goodsIds:"+goodsIds);if (checkNull(orderNo) && checkNull(goodsIds)) {$.ajax({type: "POST",url: prefix + "/checkOpenClassAndRefundStatus",dataType: 'json',data: {orderNo:orderNo,goodsIds: goodsIds},success: function (result) {if (result.code == web_status.SUCCESS) {var data = result.data;//console.log(data)//判断开关课状态var find = parent.find("select[name='closeClass']");//console.log(find);find.empty();var html = '<option value="">请选择</option>';if (data.openclass == 1) {//全部关课html += '<option value="0"></option><option value="1" selected></option>';}else {//没有全关html += '<option value="0" selected></option><option value="1"></option>';}find.append(html);var find2 = parent.find("select[name='gwDrawback']");find2.empty();var html2 = '<option value="">请选择</option>';if (data.refund == 1) {//全退html2 += '<option value="0"></option><option value="1" selected></option>';}else {//没有全退html2 += '<option value="0" selected></option><option value="1"></option>';}find2.append(html2);}}});}}

页面效果就是点击订单号弹层列表页,然后选中订单号点击确定
在这里插入图片描述
点击订单号弹层列表页,分页查询
在这里插入图片描述
弹层页面点击确定回传至父页面值的方法在弹层页面提交方法中

function submitHandler() {var id = $.table.selectColumns($.table._option.columns[1].field);if (id.length == 0) {$.modal.alertWarning("请至少选择一条记录");return;}var orderNo = $.table.selectColumns($.table._option.columns[2].field);$.modal.close();// 父页面的方法// activeWindow().selectUsers();// 父页面的变量var clicknum = $("#clicknum").val();console.log(id);console.log(orderNo);//console.log('#metaOrderId'+clicknum+'');activeWindow().$('#metaOrderId'+clicknum+'').val(id);activeWindow().$('#orderNo'+clicknum+'').val(orderNo);activeWindow().getMetaItem(clicknum);}

页面主要内容相关的就这些,其他的onclick或者onblur事件相似处理即可;
另外编辑页面在应对addgw()方法添加内容回显时采用了ajax返回html页面的处理方式

$(function () {getGwInfos();});//初始化加载官网抵扣商品信息function getGwInfos() {var recordId = $("#id").val();var memberId = $("#memberId").val();$.ajax({type: "POST",url: prefix + "/getGwInfos",dataType: 'html',data: {recordId: recordId,memberId:memberId},success: function (html) {$("#container").append(html);var array = $("#container").find("select[name='deductionGoodsIds']");array.each(function (i,item) {//console.log(item)$(item).select2();})//$(".gwdetail").find(".deductionGoodsIds").select2();}});}

具体的回显html页面代码如下

<div class="gwdetail" th:each="gw : ${gwInfos}"><input type="hidden" name="gwId" id="gwId" th:value="${gw.id}"/><div class="form-group"><label class="col-sm-3 control-label">订单号:</label><div class="col-sm-8"><input type="hidden" name="metaOrderId" th:id="metaOrderId+${gwStat.index}" th:value="${gw.metaOrderId}"/><input type="text" name="orderNo" th:id="orderNo+${gwStat.index}"  class="form-control" readonlyth:value="${gw.orderNo}" th:onclick="getMetaOrders([[${gwStat.index}]])"/></div></div><div class="form-group"><label class="col-sm-3 control-label">抵扣商品:</label><div class="col-sm-8"><select name="deductionGoodsIds" class="form-control select2-multiple" multiple><option value="">请选择</option><option th:each="item:${gw.items}" th:value="${item.goodsId}"th:selected="${gw.deductionGoodsIds?.contains(item.goodsId)}" th:text="${item.goodsName}"></option></select><button type="button" class="btn btn-w-m btn-primary" th:onclick="judgeRefund([[${gwStat.index}]])">关课/退款</button></div></div><div class="form-group"><label class="col-sm-3 control-label">支付金额:</label><div class="col-sm-8"><input id="gwPaymentAmount" name="gwPaymentAmount" class="form-control" type="text"th:value="${gw.paymentAmount}"></div></div><div class="form-group"><label class="col-sm-3 control-label">商品是否关课:</label><div class="col-sm-8"><select id="closeClass" name="closeClass" class="form-control"><option value="">请选择</option><option value="0" th:selected="${gw.closeClass == 0}"></option><option value="1" th:selected="${gw.closeClass == 1}"></option></select></div></div><div class="form-group"><label class="col-sm-3 control-label">抵扣商品是否有退款:</label><div class="col-sm-8"><select id="gwDrawback" name="gwDrawback" class="form-control"><option value="">请选择</option><option value="0" th:selected="${gw.drawback == 0}"></option><option value="1" th:selected="${gw.drawback == 1}"></option></select></div></div><div class="form-group"><label class="col-sm-3 control-label">抵扣金额:</label><div class="col-sm-8"><input id="deductionAmount" name="deductionAmount" class="form-control" type="text" th:value="${gw.deductionAmount}"></div></div><div>---------------------------------------------------------------------</div></div>

这里需要注意的是themleaf页面拼接动态id时的操作
在这里插入图片描述
这样的话涉及到themleaf复杂页面事件添加,各种事件交互的操作就完成了,重复的没有多写。

页面参数提交

由于addgw()方法会添加重复的属性名称,因此在提交时需要特殊处理,以list方式添加进提交参数json中提交,页面提交方法代码

function submitHandler() {var data = $.common.formToJSON('form-tmUpgradeOrderRecord-add');//var data = $('#form-tmUpgradeOrderRecord-add').serializeArray();var list= new Array();$("div[class='gwdetail']").each(function(i,item){var metaOrderId = $(item).find("input[name='metaOrderId']").val();var orderNo = $(item).find("input[name='orderNo']").val();var deductionGoodsIds = $(item).find("select[name='deductionGoodsIds']").val().toString();var gwPaymentAmount = $(item).find("input[name='gwPaymentAmount']").val();var closeClass = $(item).find("select[name='closeClass']").val();var gwDrawback = $(item).find("select[name='gwDrawback']").val();var deductionAmount = $(item).find("input[name='deductionAmount']").val();var detail = {"metaOrderId":metaOrderId,"orderNo":orderNo,"deductionGoodsIds":deductionGoodsIds,"paymentAmount":gwPaymentAmount,"closeClass":closeClass,"drawback":gwDrawback,"deductionAmount":deductionAmount};list.push(detail);});//data.push({"name":"gwlist","value":list});data["gwlist"]=list;data = JSON.stringify(data);//console.log(data);if ($.validate.form()) {$.operate.save2(prefix + "/add", data);}}// 获取form下所有的字段并转换为json对象formToJSON: function(formId) {var json = {};$.each($("#" + formId).serializeArray(), function(i, field) {json[field.name] = field.value;});return json;}

其中提交方法中调用的save2()ajax方法需要指定contentType: “application/json; charset=utf-8”,ajax默认的提交方式不支持json格式数据
在这里插入图片描述
后端接收参数方法中传参需要加入注解@RequestBody
在这里插入图片描述
这样整个过程就完整了,后续如果有需要但是博文没看明白的欢迎留言,一起进步。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试期末复习

软件测试期末复习 Author 雨 2024年6月18日 1. 什么是软件测试 从一个通常为无限的执行域中选取合适的有限的测试用例&#xff0c;对程序所期望的行为进行动态验证的活动过程。 2. 软件测试的目的 尽早地发现软件的缺陷 3.什么是测试什么是缺陷 从软件内部看&#xff1a;软件开…

SpringCloudStream原理和深入使用

简单概述 Spring Cloud Stream是一个用于构建与共享消息传递系统连接的高度可扩展的事件驱动型微服务的框架。 应用程序通过inputs或outputs来与Spring Cloud Stream中binder对象交互&#xff0c;binder对象负责与消息中间件交互。也就是说&#xff1a;Spring Cloud Stream能…

探索Web Components

title: 探索Web Components date: 2024/6/16 updated: 2024/6/16 author: cmdragon excerpt: 这篇文章介绍了Web Components技术&#xff0c;它允许开发者创建可复用、封装良好的自定义HTML元素&#xff0c;并直接在浏览器中运行&#xff0c;无需依赖外部库。通过组合HTML模…

多尺度特征提取:原理、应用与挑战

多尺度 多尺度特征提取&#xff1a;原理、应用与挑战**原理****应用****挑战****总结** 多尺度特征提取&#xff1a;原理、应用与挑战 在计算机视觉、自然语言处理和信号处理等领域&#xff0c;有效地捕捉和解析数据的多种尺度特性是至关重要的。多尺度特征提取是一种技术&…

【机器学习】智能创意工厂:机器学习驱动的AIGC,打造未来内容新生态

&#x1f680;时空传送门 &#x1f50d;机器学习在AIGC中的核心技术&#x1f4d5;深度学习&#x1f388;生成对抗网络&#xff08;GANs&#xff09; &#x1f680;机器学习在AIGC中的具体应用&#x1f340;图像生成与编辑⭐文本生成与对话系统&#x1f320;音频生成与语音合成 …

SpringMVC01-初始SpringMVC

SpringMVC 回顾MVC 什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式&#xff0c;MVC是一种架构模…

高通Android 12 右边导航栏改成底部显示

最近同事说需要修改右边导航栏到底部&#xff0c;问怎么搞&#xff1f;然后看下源码尝试下。 1、Android 12修改代码路径 frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java a/frameworks/base/services/core/java/com/android/server/wm/Display…

【LeetCode:2786. 访问数组中的位置使分数最大 + 递归 + 记忆化缓存 + dp】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

电感的本质是什么

什么是电感&#xff1f; 电感器件一般是指螺线圈&#xff0c;由导线圈一圈靠一圈地绕在绝缘管上&#xff0c;绝缘管可以是空心的&#xff0c;也可以包含铁芯或磁粉芯。 为什么把’线’绕成’圈’就是电感&#xff1f; 电感的工作原理非常抽象&#xff0c;为了解释什么是电感…

IntelliJ IDEA 使用 Maven 时不加载本地私服的最新版本快照(snapshot)JAR 包

IntelliJ IDEA 使用 Maven 时不加载本地私服的最新版本快照&#xff08;snapshot&#xff09;JAR 包 目录 IntelliJ IDEA 使用 Maven 时不加载本地私服的最新版本快照&#xff08;snapshot&#xff09;JAR 包1. 检查 settings.xml2. IDEA Maven 配置3. 强制更新 Snapshot4. 使用…

使用 C# 学习面向对象编程:第 8 部分

抽象方法 亲爱的读者&#xff0c;本文是 OOP 的第四大支柱&#xff0c;也是最后一大支柱。对于 OOP 初学者来说&#xff0c;这很容易让人困惑。因此&#xff0c;我们用非常简单的语言提供了一个示例。 “抽象用于管理复杂性。无法创建抽象类的对象。抽象类用于继承。” 例如…

端口映射工具下载?

天联是一款强大的端口映射工具&#xff0c;它能够帮助用户实现远程数据采集管理、异地统一管理、随时随地协同办公等多种场景的应用。无论您是医药、餐饮、商超等零售行业的企业&#xff0c;还是需要使用OA、CRM、ERP、财务进销存等系统的企业&#xff0c;甚至是使用视频监控设…

Python自动化测试面试题精选(一)

今天大家介绍一些Python自动化测试中常见的面试题&#xff0c;涵盖了Python基础、测试框架、测试工具、测试方法等方面的内容&#xff0c;希望能够帮助你提升自己的水平和信心。 项目相关 什么项目适合做自动化测试&#xff1f; 答&#xff1a;一般来说&#xff0c;适合做自…

前端菜鸡流水账日记 -- git管理工具(多版本)

哈喽哇&#xff0c;我又又又来了&#xff0c;其实之前就挺想进行一篇关于git管理工具的分享的&#xff0c;但是一直都没有来的及&#xff0c;直到今天&#xff0c;在学习的时候&#xff0c;&#xff0c;一个朋友新发现了一个vscode中的小插件&#xff0c;所以我就决定一起来分享…

Github入门教程,适合新手学习(非常详细)

前言&#xff1a;本篇博客为手把手教学的 Github 代码管理教程&#xff0c;属于新手入门级别的难度。教程简单易操作&#xff0c;能够基本满足读者朋友日常项目寄托于 Github 平台上进行代码管理的需求。Git 与 Github 是一名合格程序员 coder 必定会接触到的工具与平台&#x…

React+TS前台项目实战(十)-- 全局常用组件CopyText封装

文章目录 前言CopyText组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲项目常用复制文本组件封装&#xff0c;这个组件是一个用于拷贝文本的 React 组件&#xff0c;它提供了拷贝&#xff0c;国际化和消息提示的功能 CopyText组件 1. 功能分…

linux远程访问及控制

补充&#xff1a; 终端&#xff1a;接收用户的指令 TTY终端 虚拟终端 ssh:22端口号&#xff0c;加密。 telnet&#xff1a;23端口号&#xff0c;不加密。 解释器&#xff1a;shell SSH 远程管理 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c…

012.指纹浏览器编译-修改canvas指纹(高级)

指纹浏览器编译-修改canvas指纹(高级) 一、canvas指纹是什么 之前介绍过canvas指纹和常见网站绕过canvas指纹&#xff0c;插眼&#xff1a; https://blog.csdn.net/w1101662433/article/details/137959179 二、为啥有更高级的canvas指纹 众所周知&#xff0c;creepjs和brow…

利用CUDA加速卷积计算:原理、实践与示例代码

利用CUDA加速卷积计算:原理、实践与示例代码 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)是目前最流行和有效的模型之一。然而,随着模型复杂度的增加,卷积计算的计算量也随之增加,这使得在CPU上进行卷积计算变得非常耗时。因此,利用CUDA加速卷积…

我在高职教STM32——GPIO入门之蜂鸣器

大家好&#xff0c;我是老耿&#xff0c;高职青椒一枚&#xff0c;一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次&#xff0c;同行应该都懂的&#xff0c;老师在课堂上教学几乎是没什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平台寻求认同感和成就…