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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM