themleaf 页面弹层取值

news2024/10/6 8:36:48

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" readonly

                   th: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.coloradmin.cn/o/1821610.html

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

相关文章

chrome浏览器设置--disable-web-security解决跨域

在开发人员于后台进行接口测试的时候&#xff0c;老是遇到跨域问题&#xff0c;这时前端总是会让后台添加跨域请求头来允许跨域请求&#xff0c;今天介绍一个简单的方法跨过这一步操作的设置。 –disable-web-security参数&#xff0c;禁用同源策略&#xff0c;利于开发人员本…

Postman 请求参数传递指南:Query、Path和Body

Postman 作为一个功能强大的工具&#xff0c;极大地简化了 API 测试和调试的过程&#xff0c;提供了发送请求和检查响应的直接方法。本文将着重介绍如何在 Postman 中高效地处理请求参数&#xff0c;以提高 API 测试和开发的便利性。 1、解析请求参数 首先&#xff0c;我们需要…

2024最值得入手的骨传导耳机有几款?年度精选五款骨传导耳机分享

作为一个爱好运动的人来说&#xff0c;现在天气越来越暖和了&#xff0c;很多人选择外出徒步、越野或者骑行。在运动过程中都会佩戴一些入耳式耳机&#xff0c;但是运动一段时间发现入耳式耳机带久了耳朵会很不舒服&#xff0c;而且出汗了的话对于一些不防水的入耳式耳机的话&a…

硕思LOGO设计师软件最新版下载及详细安装教程

硕思Logo设计师是一款操作灵活简单&#xff0c;且功能强大的logo制作软件。它可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 该软件提供了很多精心设计的模板和丰富的资源&#xff0c;为更好的创建logo艺术作品&#xff…

博物馆藏品管理的重要性

博物馆是人们了解历史文化、传承文明的重要场所。而博物馆的藏品管理是博物馆的核心工作之一&#xff0c;对于展现博物馆的魅力、吸引观众的眼球有着至关重要的影响。并且博物馆藏品管理是一项复杂且专业的工作&#xff0c;它涉及到多个方面&#xff0c;包括但不限于藏品的收集…

DDPM公式推导(一)

去噪扩散概率模型 Title:Denoising Diffusion Probabilistic Models paper是UC Berkeley发表在NIPS 2020的工作 paper地址 Abstract 我们使用扩散概率模型&#xff08;一类受非平衡热力学启发的潜在变量模型&#xff09;展示了高质量的图像合成结果。根据扩散概率模型与采用La…

AI大模型的应用远比你想像的要简单—人人都是程序员

2022年底OpenAI发布了语言大模型chatgpt3.5&#xff0c;它能像人一样跟我们聊天&#xff0c;从此AI市场着了大火&#xff0c;国内外各个顶级科技公司纷纷跟进&#xff0c;出现了一大批的AI大模型&#xff0c;比如文心一言&#xff08;百度&#xff09;、Gemini&#xff08;谷歌…

Python 使用print输出二进制文件时产生的错位

项目实践中&#xff0c; with open(fileName, rb) as f: result f.read()print(result)f.close()打开二进制文件&#xff0c;打印出的结果会出现有些\x后面有好几个字符的情况 但实际这串数字是 这种情况是因为print函数将二进制数据解释为字符串并以其字节值的十六进制表…

中电金信:GienTech动态|中标、入选、参会...近期精彩呈现!

中电金信参编业内首个银行核心系统分级度量标准 2024年6月6日&#xff0c;由中国信息通信研究院云计算与大数据研究所主办的“应用现代化赋能银行核心系统升级”交流会议在京召开。会议发布了业内首个银行核心系统分级度量标准《银行核心系统现代化建设水平度量模型》&#xf…

视频字幕提取工具怎么使用?不妨看看这些教程

在探索学习设备使用的过程中&#xff0c;视频教程扮演着极其重要的角色。 但是&#xff0c;我们可能会遇到一些挑战&#xff0c;比如长视频教程的观看效率不高&#xff0c;信息量大难以快速定位到关键点&#xff0c;或者有些人更喜欢阅读文字而非观看视频来学习。 为解决这一…

前沿重器[49] | 聊聊搜索系统2:常见架构

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

GPT4,你能做什么详细告诉我可以么?

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

三个pdf工具和浏览软件(pdftk,muppdf,epdfview)

安装pdftk pdftk是一款功能强大的PDF处理工具&#xff0c;主要用于对PDF文件进行各种操作。它提供了丰富的功能&#xff0c;包括但不限于合并、拆分、旋转、加密、解密、添加水印、从PDF文档中解出附件等。pdftk分为图形界面版本和命令行版本&#xff0c;适用于不同的用户需求…

HTML入门教程:深度解析HTML,开启你的前端技术之旅

一、引言 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是前端开发的基础&#xff0c;它负责构建网页的结构和内容。作为前端技术栈的基石&#xff0c;HTML的掌握程度直接影响到网页的开发效率和用户体验。本教程将带你从零开始&#xff…

算法体系-22 第二十二节:暴力递归到动态规划(四)

一 最小距离累加和 1.1 描述 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 沿途只可以向下或者向右走&#xff0c;沿途的数字都累加就是距离累加和 返回最小距离累加和 1.2 分析

【安卓】在安卓中使用HTTP协议的最佳实践

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

OpenCV图像变换

一 图像的缩放 resize(src,dst,dsize,fx,fy,interpolation) fx&#xff1a;x轴的缩放因子 fy&#xff1a;y轴的缩放因子 interpolation 插值算法 INTER_NEAREST,临近插值&#xff0c;速度快&#xff0c;效果差 INTER_LINEAR,双线性插值&#xff0c;原图中的4个点 INTER_CUBIC…

手机在网状态-手机在网状态查询-手机在网站状态接口

查询手机号在网状态&#xff0c;返回正常使用、停机、未启用/在网但不可用、不在网&#xff08;销号/未启用/异常&#xff09;、预销户等多种状态 直连三大运营商&#xff0c;实时更新&#xff0c;可查询实时在网状态 高准确率-实时更新&#xff0c;准确率99.99% 接口地址&…

WordPress如何删除内存中的缓存?

今天boke112百科将某篇文章修改分类和内容更新后&#xff0c;发现文章底部的相关文章显示的内容跟文章分类、标签毫无关系&#xff0c;还是显示原来的旧内容。后来查看YIA主题相关文章的代码&#xff0c;才发现相关文章的数据保存到内存中的&#xff0c;而且是永不过期&#xf…

虹科免拆诊断案例 | 2014 款雪佛兰迈锐宝车驾驶人侧车窗开关无法控制其他车窗升降

故障现象  一辆2014款雪佛兰迈锐宝车&#xff0c;搭载LTD发动机&#xff0c;累计行驶里程约为12万km。车主反映&#xff0c;操作驾驶人侧车窗开关无法控制其他车窗升降&#xff0c;而操作其他车门上的车窗开关可以正常控制相应的车窗升降。 故障诊断  接车后试车&#xff0…