复制tr的一行数据或者复制数据使用,使用jq和php

效果图:

在这里插入图片描述

2.Html

<!--复制的tr数据,s----------------------------------------------------------------------------------------------->{foreach from=$arrs key=kk item=vv}
<tr><td style="text-align:center;"  >1</td><td style="text-align:center;" >2</td><td style="text-align:center;" >3</td><td style="text-align:center;"  >4</td></tr>
{/foreach}<!--定位复制要加入的位置-->
<tr class="del_rukou" id="copy_rukou" style="display: none;"></tr><!--复制的tr数据,e----------------------------------------------------------------------------------------------->

3.js

<script>//复制tr$(function () {$(".select_option").click(function (){add_tr('copy_rukou');})})function add_tr(id) {// 获取所有的tr元素// var rows = $('tr');// 创建新的tr元素var newRow = $('<tr style="height: 35px;"></tr><tr id="copy_rukou2" class="del_rukou2" style="display: none;"></tr>');//ajax获取添加的复制数据var tr_str = get_tr_fee('{$work_qid}')// 在新tr元素中添加数据newRow.html(tr_str); // 这里可以根据需要添加更多的数据// 将新的tr元素插入到指定id的tr元素之后$('#' + id ).after(newRow);//把第一个复制的定位的id删除,不然复制的数据在上面,不在下面$('.del_rukou').remove();//替换class,如果使用一样的class会都删除$(".del_rukou2").attr("id", "copy_rukou");$(".del_rukou2").attr("class", "del_rukou");//最上面的rowspan1叠加,这里是处理单元格的合并问题,可去掉var rowspan1 = $("#top_rowspan_id").attr("rowspan");rowspan1 = parseInt(rowspan1)var rowspan_new = rowspan1 + 1;$("#top_rowspan_id").attr("rowspan",rowspan_new);//文件上传的rowspan1叠加,这里是处理单元格的合并问题,可去掉var file_rowspan_val = $("#file_rowspan_id").attr("rowspan");file_rowspan_val = parseInt(file_rowspan_val)var file_rowspan_val = file_rowspan_val + 1;$("#file_rowspan_id").attr("rowspan",file_rowspan_val);}function get_tr_fee(wid) {var str = '';Ajax.call('customer_quote2worker.php?act=get_tr_fee&wid='+ wid, '', function(result){if(result.error==0){str =  result.str;}else{alert(result.message);}}, 'GET', 'JSON',false);return str;}/*function showCopyTrStr(resule){var resule_json = JSON.parse(resule);}*///删除事件function removeTr(e,wid,id){$(e).parents("tr").remove();//把合并的单元格-1//最上面的rowspan1叠加,这里是处理单元格的合并问题,可去掉var rowspan1 = $("#top_rowspan_id").attr("rowspan");rowspan1 = parseInt(rowspan1)var rowspan_new = rowspan1 - 1;$("#top_rowspan_id").attr("rowspan",rowspan_new);//文件上传的rowspan1叠加,这里是处理单元格的合并问题,可去掉var file_rowspan_val = $("#file_rowspan_id").attr("rowspan");file_rowspan_val = parseInt(file_rowspan_val)var file_rowspan_val = file_rowspan_val - 1;$("#file_rowspan_id").attr("rowspan",file_rowspan_val);//删除id数据,删除数据库的数据ajax_delete_tr(wid,id)}function ajax_delete_tr(wid,id) {Ajax.call('customer_quote2worker.php?act=ajax_delete_tr&wid='+ wid +'&id=' + id, '', function(result){if(result.error==0){}else{alert(result.message);}}, 'GET', 'JSON',false);}</script>

4.Php

elseif ($_REQUEST['act'] == 'get_tr_fee')//获取复制的tr数据,拼接到html中
{$wid        = intval($_REQUEST['wid']);$error_msg         = 'wid缺少';if(!$wid){echo json_encode(array('error'=>3,'message'=>$error_msg));exit;}$work_quote_row = db_class::getInfo($wid);//获取这个id的全部数据if(!$work_quote_row){echo json_encode(array('error'=>3,'message'=>'数据不存在'));exit;}$add_data                = [];$add_data['ref_wid']     = $wid;$add_data['add_time']    = get_todaytime();$add_data['add_user_id'] = get_admin_id_session();$add_id = db_class::add($add_data);$getCopyTrHtml = db_class::getCopyTrHtml($wid,$add_id);echo json_encode(array('error'=>0,'message'=>'','str'=>$getCopyTrHtml));exit;
}elseif ($_REQUEST['act'] == 'ajax_delete_tr')//删除复制的tr数据
{$wid        = intval($_REQUEST['wid']);$id        = intval($_REQUEST['id']);$error_msg         = 'wid缺少';if(!$wid){echo json_encode(array('error'=>3,'message'=>$error_msg));exit;}$work_quote_row = db_work_quote::getInfo($wid);$fee_row = db_work_quote_copy_fee::getInfo($id);if(!$work_quote_row){echo json_encode(array('error'=>3,'message'=>'数据不存在'));exit;}if(!$fee_row){echo json_encode(array('error'=>3,'message'=>'删除的数据不存在'));exit;}$res = db_work_quote_copy_fee::remove($id);if(!$res){echo json_encode(array('error'=>1,'message'=>'删除失败'));exit;}echo json_encode(array('error'=>0,'message'=>'','str'=>$getCopyTrHtml));exit;
}删除tr的方法,删除数据库的。看需求
5.类的方法
static function add($data)
{$res = $GLOBALS['db']->autoExecute(self::$table, $data, 'INSERT');$id  = $GLOBALS['db']->insert_id();//上面代码意思是写入数据库的数据,就是insert..return $res ? $id : false;
}/*** 获取复制的tr数据* @param $id* @return string*/static function getCopyTrHtml($wid,$id){$str = '';if(!$wid){return '';}if(!$id){return '';}$str.= '<td style="text-align:center;"  ><span><input name="name1" value="" type="text"></span>
</td>
<td style="text-align:center;" ><span><input name="name2" value="" type="text"></span>
</td>
<td style="text-align:center;" ><span><input name="name3" value="" type="text"></span></td>
<td style="text-align:center;"  ><span><input name="name4" value="" type="text"></span></td>';return $str;}这个方法,把多个td加入tr中/*** 直接删除,杀无赦* @param $id* @return bool*/
static function remove($id)
{if(!$id){return false;}$sql = "delete from " . self::$table. " WHERE id = ".$id;$res = $GLOBALS['db']->query($sql);if(!$res){return false;}return true;
}

6.注意

1.插入tr就是在数据库加入一条数据。如果想td都为空,把它删除,可以在刷新的时候,判断td是否都为空那就删除。
2.删除tr就是先删除dom节点,然后再删除数据库的数据。
3.这个操作有好的一面,就是用户在刷新后,也可以保存数据的完整性。如果使用jq复制的数据,刷新就会消失。还有降低对jq的操作复杂度,如果使用jq写也可以。
4.坏的一面就是,直接在数据库插入数据,会频繁操作数据库。对数据库不好。

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

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

相关文章

CH341 USB总线转接芯片

产品概述&#xff1a; CH341是一个USB总线的转接芯片&#xff0c;通过USB总线提供异步串口、打印口、并口以及常用的2线和4线等同步串行接口。 在异步串口方式下&#xff0c;CH341提供串口发送使能、串口接收就绪等交互式的速率控制信号以及常用的MODEM联络信号&#xff0c;用于…

日期--data与String的相互转换

首先我们要明确 yyyy-MM-dd HH:mm:ss 其中y:年份 MM:月份 dd:天 HH:小时 mm&#xff1a;分 ss&#xff1a;秒 date转String // 获取当前时间LocalDateTime dateLocalDateTime.now(); // 设置日期格式DateTimeFormatter formatterDateTimeFormatter.ofPattern("yyyy-MM-dd…

PostGreSQL:时间戳时区问题

时间|日期类型 PostGreSQL数据库内置的时间类型如下&#xff0c;注意到&#xff1a;内置的时间类型被分为了with time zone-带时区、without time zone-不带时区两种类型&#xff0c; time、timestamp和interval都可以接受一个可选的精度值 p&#xff08;取值&#xff1a;0-6&a…

JMeter 4.0 如何获取cookie

文章目录 前言JMeter 4.0 如何获取cookie1. 修改jmeter.properties 文件2. 添加HTTP Cookie 管理器3. 获取cookie信息 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天…

如何为虚拟机添加磁盘,扩充原有分区的磁盘空间

如何为虚拟机添加磁盘&#xff0c;扩充原有分区的磁盘空间 关机新增磁盘 虚拟机关机的状态下&#xff0c;在 VMware 当中新增一块磁盘&#xff0c;选中左边要添加磁盘的虚拟机镜像&#xff0c;然后鼠标右键点击设置。 选中磁盘点击添加 点击下一步&#xff0c;悬着SCSI这个…

慕尼黑主题活动!亚马逊云科技生成式AI全新解决方案,引领未来移动出行领域

IAA作为世界五大车展之一&#xff0c;一直对全球汽车产业的发展起着关键作用&#xff01;2023年9月5日在慕尼黑开幕的IAA MOBILITY 2023以“体验联动智慧出行”为主题&#xff0c;紧跟移动出行领域的前沿变化&#xff0c;将汇集整车企业、开发者、供应商、科技公司、服务提供商…

基于深度学习网络的火灾检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................................ load F…

vue: 使用下拉树组件@riophae/vue-treeselect

前言: 在vue中, 因为element-ui 2.X是没有tree-select组件的&#xff0c;到了element-plus就有了 riophae/vue-treeselect是一个基于 Vue.js 的树形选择器组件&#xff0c;可以用于选择树形结构的数据。它支持多选、搜索、异步加载等功能&#xff0c;可以自定义选项的样式和模…

如何制作一个百货小程序

在这个数字化时代&#xff0c;小程序已成为各行各业的必备工具。其中&#xff0c;百货小程序因其便捷性和多功能性&#xff0c;越来越受到人们的青睐。那么&#xff0c;如何制作一个百货小程序呢&#xff1f;下面&#xff0c;我们就详细介绍一下无需编写代码的步骤。 一、进入后…

【C++基础】7. 控制语句

文章目录 【 1. 循环 】1.1 循环类型1.2 循环控制语句break 语句continue 语句goto 语句 1.3 无限循环 【 2. 选择 】switch 语句&#xff1f;&#xff1a;语句 【 1. 循环 】 1.1 循环类型 循环类型描述while 循环当给定条件为真时&#xff0c;重复语句或语句组。它会在执行…

【django开发手册】详解drf filter中DjangoFilterBackend,SearchFilter,OrderingFilter使用方式

&#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;开源建设者与全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&#xff1a;Zeeland&#x1f4da; Github主页: Undertone0809 (Zeeland)&…

如何使用CSS实现一个响应式图片幻灯片(Responsive Image Slider)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 响应式图片幻灯片⭐ HTML结构⭐ CSS样式⭐ JavaScript交互⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个…

Astro建站教程:安装nodejs,npm下载Astro,安装扩展

下载Nodejs LTS版&#xff1a;https://nodejs.org/en 安装步骤全默认即可&#xff0c;安装路径可以根据自己的爱好更改在桌面右键打开cmd或powershell&#xff0c;输入node -v和npm -v测试是否安装成功 浏览器打开https://docs.astro.build/en/install/auto/ 复制里面的npm cre…

安全狗陈奋:数据安全需要建立在传统网络安全基础之上

8月22日-23日&#xff0c;由创业邦主办的“2023 DEMO WORLD 企业开放式创新大会”在上海顺利举行。 作为国内云原生安全领导厂商&#xff0c;安全狗受邀出席此次活动。 本次大会以“拥抱开放”为主题&#xff0c;聚焦开放式创新&#xff0c;通过演讲分享、专场对接、需求发布…

你用过 Maven Shade 插件吗?

文章首发地址 Maven Shade插件是Maven构建工具的一个插件&#xff0c;用于构建可执行的、可独立运行的JAR包。它解决了依赖冲突的问题&#xff0c;将项目及其所有依赖&#xff08;包括传递依赖&#xff09;合并到一个JAR文件中。 下面是对Maven Shade插件的一些详解&#xff…

MySQL知识笔记——初级基础(实施工程师和DBA工作笔记)

老生长谈&#xff0c;MySQL具有开源、支持多语言、性能好、安全性高的特点&#xff0c;广受业界欢迎。 在数据爆炸式增长的年代&#xff0c;掌握一种数据库能够更好的提升自己的业务能力&#xff08;实施工程师&#xff09;。 此系列将会记录我学习和进阶SQL路上的知识&#xf…

Revit SDK 介绍:RayTraceBounce 光线反弹

前言 这个例子模拟光线反弹。 内容 通过修改参数&#xff0c;从&#xff08;0&#xff0c;0&#xff0c;0&#xff09;点向&#xff08;1&#xff0c;0&#xff0c;0&#xff09;方向射出光线&#xff0c;经过若干次反弹之后的结果。如图所示&#xff1a; 在Revit API 中&…

Codeforces-Round-895-Div-3

A. Two Vessels 题目翻译 你有两个装有水的容器。第一个容器含有 a a a克水&#xff0c;第二个容器含有 b b b克水。这两艘船都非常大&#xff0c;可以容纳任意数量的水。 您还有一个空杯子&#xff0c;最多可容纳 c c c克水。 一次&#xff0c;您可以从任何容器中舀出多 c…

go语言基本操作--四

面向对象编程 对于面向对象编程的支持go语言设计得非常简洁而优雅。因为&#xff0c;Go语言并没有沿袭面向对象编程中诸多概念&#xff0c;比如继承(不支持继承&#xff0c;尽管匿名字段的内存布局和行为类似继承&#xff0c;但它并不是继承)、虚函数、构造函数和析构函数、隐…

HTTP代理如何设置

HTTP代理是一种非常重要的网络工具&#xff0c;它可以帮助我们在访问互联网时提高访问速度&#xff0c;保护用户隐私等等。在使用HTTP代理时&#xff0c;需要先进行设置。下面就来介绍一下HTTP代理如何设置。 一、了解HTTP代理 在开始设置HTTP代理之前&#xff0c;我们需要先了…