zoukankan      html  css  js  c++  java
  • jQuery获取表格隐藏域与ajax请求数据结合显示详情

    0.表格样式

    1.显示详情

    第一种方法:利用表格的基本数据与从数据库中获取结合。

    主要代码:

    
    
     <a href="javascript:void(0)" data-toggle="modal"
                                                                    data-target="#el_FourInfo"
                                                                    onClick="allInfo(this,${danger.dangerid})">详情</a>
     

    全部表格代码

    
    
                          <c:forEach var="danger"
                                                    items="${result.pageBean.productList }" varStatus="status">
                                                    <tr>
                                                        <td>${ status.index + (result.pageBean.currentPage-1)*10+1}</td>
                                                        <td><fmt:formatDate value="${danger.findtime }"
                                                                pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
                                                        <td>${danger.checkunit }</td>
                                                        <td>${danger.type }</td>
                                                        <td>${danger.dangergrade }</td>
                                                        <td>${danger.unit }</td>
                                                        <td>${danger.content}</td>
                                                        <td>${danger.unit}</td>
                                                        <td>${danger.manager}</td>
                                                        <td>问题</td>
                                                        <td>${danger.rectificationmeasure }</td>
                                                        <td><fmt:formatDate
                                                                value="${danger.rectificationtime }"
                                                                pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
                                                        <td><fmt:formatDate value="${danger.sidingtime }"
                                                                pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
                                                        <td><c:if test="${danger.dangerstatus eq '已整改'}">
                                                                <!-- 变活, 1 :隐患id ,1 :跟踪id -->
                                                                <a href="javascript:void(0)"
                                                                    onClick="el_setFour(this,${danger.dangerid},${danger.followid })">复查</a>
                                                            </c:if> <c:if test="${danger.dangerstatus ne '已整改'}">
                                                                <!-- <--需要改一下。2   换成id -->
                                                                <a href="javascript:void(0)" data-toggle="modal"
                                                                    data-target="#el_FourInfo"
                                                                    onClick="allInfo(this,${danger.dangerid})">详情</a>
                                                            </c:if></td>
                                                    </tr>
                                                </c:forEach>
     

    点击详情的时候把自己传到JS函数中,JS函数根据传过来的处理(基本信息从表格中获取,剩下需要的其他信息用ajax从数据库中获取并填充到模态框的表格中,注意下面红字代码)

                                        <script>
                                            function allInfo(obj,recheckid) {
                                                $('#allInfo').modal();
                                                $tds = $(obj).parents('tr').children('td');
                                                $("#xxcheckdate").text($tds.eq(1).html());
                                                $("#xxcheckunit").text($tds.eq(2).html());
                                                $("#xxdangertype").text($tds.eq(3).html());
                                                $("#xxdutyunit").text($tds.eq(7).html());
                                                
                                                $("#xxzhenggaicuoshi").text($tds.eq(10).html());
                                                $("#xxcheckman").text($tds.eq(7).html());//需要隐藏
                                                $("#xxplace").text($tds.eq(4).html());//需要隐藏
                                                $("#xxdangerlevel").text($tds.eq(4).html());
                                                $("#xxdangercontent").text($tds.eq(6).html());
                                                $("#xxzhenggaitime").text($tds.eq(11).html());
                                                
                                                
                                                $.ajax({        
                                                        url : '${pageContext.request.contextPath}/recheck_getRecheck.action',
                                                        data : {"recheckid" : recheckid},
                                                        type : 'POST',
                                                        dataType : 'json',
                                                        success : function(data) {
                                                            $("#xxrecheckman").text(data.result.recheckman);
                                                            $("#xxrecheckcomment").text(data.result.comment);
                                                            if($tds.eq(13).html()=="未复查"){
                                                                $("#xxrecheckresult").text($tds.eq(13).html());
                                                            }else if(data.result.recheckresult=="1"){
                                                                $("#xxrecheckresult").text('合格');
                                                            }else if(data.result.recheckresult=="0"){
                                                                $("#xxrecheckresult").text('不合格');
                                                            }
                                                        }
                                                })
                                            }
                                        </script>

    代码分析:

      $tds = $(obj).parents('tr').children('td');是获取元素的上级的td元素集合。 $("#xxcheckdate").text($tds.eq(1).html());是获取表格指定第二列的数据并赋给模态框中的id为xxcheckdate的输入框。
    然后通过下面的ajax获取信息后添加到模态框。

    重点:(例子二)

      可以将所有的基本数据添加到隐藏域,然后在点击详情的时候获取隐藏域的值,并赋给模态框中的值,然后开启模态框。如果一行隐藏多个字段,可以每个加个class,然后通过获取到td元素,再通过过滤获取其兄弟节点或者其孩子节点.

    jsp添加隐藏域

                                                <c:forEach var="danger"
                                                    items="${result.pageBean.productList }" varStatus="status">
                                                    <td>${ status.index + (result.pageBean.currentPage-1)*10+1}
                                                        <input type="hidden" id="danger_IdNum"
                                                        value="${danger.dangerid }" /> <input type="hidden"
                                                        id="siding_IdNum" value="${danger.sidingid }" /> <input
                                                        type="hidden" class="address_hidden"
                                                        value="${danger.address }" /> <input type="hidden"
                                                        class="dutyPerson_hidden" value="${danger.dutyperson}" /> <input
                                                        type="hidden" class="supervisor_hidden"
                                                        value="${danger.supervisor }" /> <input type="hidden"
                                                        class="rectificationmeasure_hidden"
                                                        value="${danger.rectificationmeasure }" />
    
                                                    </td>
                                                    <td>${danger.dangergrade }</td>
                                                    <td>${danger.type }</td>
                                                    <td>${danger.unit }</td>
                                                    <td>${danger.content}</td>
                                                    <td>问题</td>
                                                    <td><fmt:formatDate value="${danger.findtime }"
                                                            pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
                                                    <td>${danger.checkunit }</td>
                                                    <td>${danger.findperson }</td>
                                                    <td><fmt:formatDate
                                                            value="${danger.rectificationtime }"
                                                            pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
                                                    <td><fmt:formatDate value="${danger.sidingtime }"
                                                            pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
                                                    <td>${danger.dangerstatus }</td>
                                                    <td><a href="javascript:void(0)" onClick="trace(this)">隐患跟踪</a>
                                                        <a href="javascript:void(0)" onClick="allInfo(this)">详情</a>
                                                        <a href="javascript:void(0)" onClick="postpone(this)">延期</a>
                                                    </td>
                                                    </tr>
                                                </c:forEach>
                                            </tbody>

    详情事件:获取隐藏于数据与表格数据填充到模态框,没有的用ajax请求后端

     JS获取隐藏域的值赋给模态框

                                        <script>
                                //点击详情按钮进行的操作
                                function allInfo(obj) {
                                    
                                    //获取隐藏域值
                                    var address_hidden = $(obj).parents("tr").find(".address_hidden").val();
                                    var dutyPerson_hidden = $(obj).parents("tr").find(".dutyPerson_hidden").val();
                                    var supervisor_hidden = $(obj).parents("tr").find(".supervisor_hidden").val();
                                    var rectificationmeasure_hidden = $(obj).parents("tr").find(".rectificationmeasure_hidden").val();
                                    
                                    
                                    //获取当前行中的所有列的信息
                                    $tds = $(obj).parents('tr').children('td');
                                    //alert($tds.eq(0).html() + $tds.eq(1).html());
                                    //alert($("#findTime").text());
                                    //$("#dangerGrade").text($tds.eq(1).html());
                                    $("#dangerGrade_detail").text($tds.eq(1).html());
                                    $("#dangerType_detail").text($tds.eq(2).html());
                                    $("#dutyUnit_detail").text($tds.eq(3).html());
                                    $("#dangerContent_detail").text($tds.eq(4).html());
                                    $("#findTime_detail").text($tds.eq(6).html());
                                    $("#checkUnit_detail").text($tds.eq(7).html());
                                    $("#findPerson_detail").text($tds.eq(8).html());
                                    $("#rectificationTime_detail").text($tds.eq(9).html());
                                    
                                    //添加隐藏域信息
                                    $("#address_detail").text(address_hidden);
                                    $("#dutyPerson_detail").text(dutyPerson_hidden);
                                    $("#rectificationmeasure_detail").text(supervisor_hidden);
                                    $("#supervisor_detail").text(rectificationmeasure_hidden);
                                    
                                    //从数据库中获取跟踪表的相关信息
                                    
                                    //获取当前行的隐患信息的四定ID
                                    var sidingId = $(obj).parents("tr").find("#siding_IdNum").val();
                                    //alert(sidingId);
                                    //异步提交获取数据
                                    $.ajax({
                                            url : '${pageContext.request.contextPath }/followHander_getDetailInfo.action',
                                            data : {"sidingId":sidingId},
                                            type : 'POST',
                                            dataType : 'json',
                                            async:true,
                                            success : function(data) {
                                                    //alert(data.followInfo);
                                                    //是否有安全措施--判断输出
                                                    $("#hasSecurity_detail").text(data.followInfo.hassecurity>0?"":"");
                                                    //追踪详情信息
                                                    $("#safetyTechnician_detail").text(data.followInfo.safetytechnician);
                                                    $("#managerNameFollow_detail").text(data.followInfo.managername);
                                                }
                                            });
                                    
                                    //开启模态框
                                    $('#allInfo').modal();
                                }
                            </script>

     总结:

      使用方法可以总结为:  表格的td里面放一些a标签,onclick时间传自己下去。JS函数首先获取其父元素tr(获取到一行),再获取其所有的td元素(获取到每列),然后对每列进行过两次取值。

    <a href="javascript:void(0)" data-toggle="modal"
                                                                    data-target="#el_FourInfo"
                                                                    onClick="allInfo(this)">详情</a>

     $tds = $(obj).parents('tr').children('td');  //获取到每列集合

    $("#xxcheckdate").text($tds.eq(1).html());  //第一种过滤方式(在表格中位置)

     var findperson_hidden = $(obj).parents('tr').find(".hidden_findperson").val();      //第二种过滤方式。找到每列再过滤每列下面的class为hidden_findperson
     var findperson_hidden = $tds.find(".hidden_findperson").val();    //同上面第二种过滤方式一样。只是用到$tds




    第二种方法:调用函数的时候传一个id,然后根据id去数据库查询后添加到模态框中。

  • 相关阅读:
    16 | 网络优化(中):复杂多变的移动网络该如何优化?
    Understanding Temporal Metrics
    Objective-C Runtime 大佬系列文章整理
    面向对象编程中的封装、抽象、继承、多态特性以及应用
    面向接口编程原理
    一次HTTP请求的完整过程——协议篇(DNS、TCP、HTTP)
    计算机网络 | 图解 DNS & HTTPDNS 原理
    CDN的加速原理是什么?
    让WKWebview支持NSURLProtocol总结
    WKWebView 请求拦截
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7488804.html
Copyright © 2011-2022 走看看