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

news2024/10/6 18:32:37

效果图:

在这里插入图片描述

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.coloradmin.cn/o/977122.html

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

相关文章

华为OD机试 - 关联子串 - 滑动窗口(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、换个思路 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A…

【C++】STL-函数对象-内建函数对象

0.前言 1.算术仿函数 #include <iostream> using namespace std;// STL-内建函数对象-算术仿函数 #include<functional> // 内建函数对象头文件//以下举例两个仿函数 -- negate and plus// negate 一元仿函数 取反仿函数 void test01() {negate<int>n;cout …

autojs修改顶部标题栏颜色

顶部标题栏的名字是statusBarColor 不是toolbar。难怪我搜索半天搜不到 修改之后变成这样了 代码如下&#xff1a; "ui"; importClass(android.view.View); importClass(android.graphics.Color); ui.statusBarColor(Color.parseColor("#ffffff")); ui.…

信息系统概述-生命周期-开发方法

信息系统概述-生命周期 考点分析信息系统概述信息系统分类企业目前所使用的具体的信息化系统信息系统的生命周期&#xff08;重要&#xff09;信息系统的开发方法&#xff08;重要&#xff09; 考点分析 每年都会考3分&#xff0c;2分会超纲 信息系统概述 信息系统分类 业务处理…

Redis——Java中的客户端和API

Java客户端 在大多数的业务实现中&#xff0c;我们还是使用编码去操作Redis&#xff0c;对于命令的学习只是知道这些数据库可以做什么操作&#xff0c;以及在后面学习到了Java的API之后知道什么方法对应什么命令即可。 官方推荐的Java的客户端网页链接如下&#xff1a; 爪哇…

XSS漏洞学习小结

声明: 所有文档均用于安全测试加强防护,若作它用后果自负. 目录 一、xss介绍 二、xss的危害 三、攻击原理 四、xss分类 反射型XSS 存储型XSS DOM型XSS 五、XSS常见攻击利用 六、XSS编码绕过 1、gpc过滤字符 2、过滤alert 3、过滤标签 4、ascii编码 5、url编码 6、j…

day 46 | ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

1143.最长公共子序列 func longestCommonSubsequence(text1 string, text2 string) int {res : 0dp : make([][]int, len(text1) 1)for i : 0; i < len(text1);i{dp[i] make([]int, len(text2) 1)}for i : 1; i < len(text1); i{for j : 1; j < len(text2); j{if t…

java八股文面试[数据库]——索引下推

什么是索引下推&#xff1f; 索引下推&#xff08;index condition pushdown &#xff09;简称ICP&#xff0c;在Mysql5.6的版本上推出&#xff0c;用于优化查询。 需求: 查询users表中 "名字第一个字是张&#xff0c;年龄为10岁的所有记录"。 SELECT * FROM users…

依托第六届中阿博览会 搭建中阿开放平台再出发

今年是“一带一路”倡议提出十周年&#xff0c;中国国际科技促进会、中国-阿拉伯国家青年创业园管委会落实共建“一带一路”倡议和为国内企业“ 走出去” 投资发展提供服务&#xff0c;积极发挥桥梁和纽带作用&#xff0c;积极开展国际合作。 &#xff08;邢纪国主任向约旦卫生…

Docker技术入门 | Part01:Docker简介

文章目录 1 虚拟化技术2 Docker概述2.1 Docker能解决的问题2.2 Docker介绍2.3 为什么使用Docker2.4 Docker特点2.5 Docker应用场景 3 Docker与虚拟机对比3.1 Docker和虚拟机组成结构3.2 Docker和虚拟机的不同点 4 Docker基本概念4.1 Docker引擎4.2 Docker基本架构4.3 Docker容器…

怎样把英语视频字幕翻译成中文

我们知道&#xff0c;随着中外文化交流日益频繁&#xff0c;视频翻译作为一种重要的跨文化交流方式&#xff0c;也越来越受到重视。那么&#xff0c;怎样把英语视频翻译成中文&#xff0c;北京视频翻译哪里比较专业&#xff1f; 据了解&#xff0c;视频翻译是直接将一种语言的音…

植物大战僵尸植物表(二)

前言 此文章为“植物大战僵尸”专栏中的第007刊&#xff08;2023年9月第六刊&#xff09;。 提示&#xff1a; 1.用于无名版&#xff1b; 2.用于1代&#xff1b; 3.pvz指植物大战僵尸&#xff08;Plants VS Zonbies)。 植物大战僵尸植物表 土豆雷窝瓜火炬树桩火爆辣椒杨…

python调用C语言库

1. 在linux下通过gcc生成so库 //请保存为 foo.c #include<stdio.h> #define uint8_t unsigned char #define uint16_t unsigned shorttypedef struct TagMyStruct {char name[10];uint8_t age;int score; } MyStruct,*MyStructPointer;MyStructPointer foo_get_data_…

JS 实现同时往数组多个位置插入值和删除值

1 start下标实现往固定地方插入数据 const aa [1, 2, 3, 4, 5, 6]; let bb [{ start: 5, list: [b1, b2, b3] },{ start: 0, list: [a1, a2] },{ start: 1, list: [c1, c2] },{ start: 1, list: [c11, c22] },{ start: 2, list: [d1, d2] },{ start: 3, deleteCount: 1 }, …

Spring 怎么解决循环依赖的呢?

Spring 怎么解决循环依赖 什么是循环依赖那 Spring 怎么解决循环依赖的呢&#xff1f;为什么要三级缓存&#xff1f;⼆级不⾏吗&#xff1f; 什么是循环依赖 Spring 循环依赖&#xff1a;简单说就是自己依赖自己&#xff0c;或者和别的 Bean 相互依赖。 只有单例的 Bean 才存在…

局域网ntp服务器设置(windows时间同步服务器NetTime)(ubuntu systemd-timesyncd ntp客户端)123端口、ntp校时

文章目录 背景windows如何配置ntp服务器手动配置配置参数AnnounceFlags和Enabled含义 使用软件配置&#xff08;NetTime&#xff09;实操相关疑问&#xff1a;0.nettime.pool.ntp.org是什么&#xff1f; 注意事项请务必检查windows主机123端口是否已被占用&#xff0c;方法请参…

按钮控件的基类--- QAbstractButton 类(抽象类)

1、QAbstractButton 属性 QAbstractButton 属性速查表属性名说明属性名说明autoExclusive自动排他性checked是否被选中autoRepeat是否启用自动重复down是否处于按下状态autoRepeatDelay初始延迟(毫秒)icon按钮上显示的图标autoRepeatInterval时间间隔(毫秒iconSize显示的图标的…

Python图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础

1. 什么是图像 & 图像在计算机中如何存储&#xff1f;2. 图像可分为哪些类型&#xff1f; 2.1. 二值(黑白)图像2.2. 灰度图像2.3. RGB彩色图像2.4. RGBA图像 3. 什么是图像通道&#xff1f;4. 图像处理 4.1. 什么是图像处理&#xff1f;4.2. 图像处理流程4.3. 图像处理技术…

汉诺塔问题(java解析代码版)

此文章只解析代码部分问题&#xff0c;理解汉诺塔&#xff0c;但是不理解代码的可以看一下&#xff0c;希望能帮到各位&#xff0c;如果有什么地方错了&#xff0c;欢迎指正。 不过其实主要还是给自己看的&#xff0c;怕到时候忘记 汉诺游戏规则如下&#xff1a; 1、有三根相…

成集云 | 金蝶云星空即时库存明细同步到多维表格 | 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件推出的新一代成长型企业SaaS管理软件&#xff0c;基于可组装低代码PaaS平台&#xff0c;构建了财务、供应链、采购管理、销售管理、生产管理、成本、税务、零售、电商、人力资源、协同办公等三十多个领域的一体化企业管理…