zoukankan      html  css  js  c++  java
  • html、jsp页面标签的遍历

    应用场景:最近的项目中二级子页面遍历生成、操作表格比较多,记录一下一直用的遍历方法。

    一般此类表格都是通过ajax请求数据,然后从callbackFunction中获取数据集合,遍历生成表:

    eg:

    var postData=new Object();
        postData.idString=idString;
        $.ajax({
        url:'debt/findXXXList.do'+'?t='+Math.random()+'&token='+token,
        data:postData,
        type:'POST',
        dataType:'json',
        success:function(data){
            //初始化数据
            $("#confirmInf").empty();
            for(var i=0;i<data.length;i++){
                var inf=data[i];
                var realname=inf.real_name;
                var amount=inf.original_amount_cny;
                var debtID=inf.debtID;
                var html='<tr><td><a class="name" title='+realname+' style="margin-right:0px;">'+realname+'</a></td>';
                var html2='<td class="abstract shuheixian"><input type="text" id="detils" placeholder="摘要内容不超过20个字" debtid='+debtID+' maxlength="20" autofocus></td>';
                var html3='<td class="sum">'+amount+'</td><td class="sum"></td>';
                var html4='<td class="sum">'+amount+'</td></tr>';
                $("#confirmInf").append(html+html2+html3+html4);
            }
            //弹出窗口
            var maskHight=$(document).height();
            var maskWidth=$(document).width();
            $('<div class="mask"></div>').appendTo($('body'));
            $('div.mask').css ({
                  'opacity':0.5,
                  'background':'#000',
                  'position':'absolute',
                  'left':0,
                  'top':0,
                  'width':maskWidth,
                  'height':maskHight,
                  'z-index':9999
            });
            $('.accept_contain').show();
            gaoduDIV();//样式
            $(".accept_contain input").eq(0).focus();
       },
        error:function(){
            console.log("error初始化数据出错。。。");
            //发送请求给发送邮件接口(邮件接口处理掉异常信息),调用给后台提示尽快修复
            var pageName="new/receivedClaims";
            var type ="findReceivedDebtPageList===初始化弹窗失败===jsp434行";
            tips("系统升级中,请稍后进行尝试。",false);
        },

     });

    此时,弹出二级页面,并且循环生成了表格数据。

    这时候,需要对表格中的input标签内容进行验证,而常规的通过id获取标签的方式不能准确定位到某条循环生成的数据.

    此时分为两种情况:

    1、获取某一行中编辑过的多条数据。

          这个需要定位到每个标签,并且从标签中获取我们所需要的数据。对应着标签结构慢慢找并不难:

    //验证
        if(!validate()){
            return false;
        }
        var dataStr="";
        var flag=1;
        var Obj1=document.getElementsByClassName("dataInfo");//关键!获取所有tr标签,然后根据结构去一层层的找
        for (var i=0;i<Obj1.length;i++ ){
            var obj=Obj1[i].childNodes;
            var type ="claims";
            var debtid=obj[0].attributes["debtid"].value;
            var debtstatus=obj[0].attributes["debtstatus"].value;
            var detils=obj[2].childNodes[0].value;
            var amount1=obj[3].childNodes[0].value;
            var amount2=obj[4].childNodes[0].value;
            //数据合法性调整
            if(amount1==""){amount1=0};
            if(amount2==""){amount2=0};
            
            //str拼接
                if(flag==1){
                    dataStr+=debtstatus+"&.&"+debtid+"&.&"+detils+"&.&"+amount1+"&.&"+amount2+"&.&";
                    flag=-1;
                }else{
                    dataStr+="@*@"+debtstatus+"&.&"+debtid+"&.&"+detils+"&.&"+amount1+"&.&"+amount2+"&.&";
                }
            }
       

    2、对每一行的某一列数据进行验证。

         这个用的jquery:

    //数据验证
    function validate(){
        var result =true;
        //摘要字段验证
        $("#editInf input[id='intro'][type='text']").each(function(){//关键:选择器的使用 id为editInf的标签下所有 id=editInf 类型为text的标签
            var value=$(this).val();
            if(value==null||value==''||value.length==0){
                $(this).val("");
                $(this).attr("style","background-color: #FFC1C1");
                $(this).attr("placeholder","摘要不能为空");
                result = false;
            }
        });

        //金额1验证
        $("#editInf input[id='amount1'][type='text']").each(function(){
            
            var value=$(this).val();
            if(!/(^[1-9]([0-9]+)?(.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9].[0-9]([0-9])?$)/.test(value)){
                $(this).val("");
                $(this).attr("style","background-color: #FFC1C1");
                $(this).attr("placeholder","请填写数字");
                result = false;
            }
        });
        //金额2验证
        $("#editInf input[id='amount2'][type='text']").each(function(){
            var value=$(this).val();
            if(!/(^[1-9]([0-9]+)?(.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9].[0-9]([0-9])?$)/.test(value)){
                $(this).val("");
                $(this).attr("style","background-color: #FFC1C1");
                $(this).attr("placeholder","请填写数字");
                result = false;
            }
            
        });
        return result;
    }

  • 相关阅读:
    asp.net mvc 中使用async/await异步编程
    简述C#中浅复制和深复制
    Angular:自定义表单控件
    Angular:Reactive Form的使用方法和自定义验证器
    Angular:ViewProviders和Providers的区别
    Angular:OnPush变化检测策略介绍
    Angular:利用内容投射向组件输入ngForOf模板
    在Angular中利用trackBy来提升性能
    Angular @HostBinding()和@HostListener()用法
    Angular利用@ViewChild在父组件执行子组件的方法
  • 原文地址:https://www.cnblogs.com/the-fool/p/11054202.html
Copyright © 2011-2022 走看看