1. 程式人生 > >web介面之表格顯示的幾點功能(包括js修改樣式,ajax資料互動等)

web介面之表格顯示的幾點功能(包括js修改樣式,ajax資料互動等)

實現功能:資料的套打功能
前期工作:已經將要套打的樣式按照固定位置,在HTML頁面完全固定好,將資料傳入就可以準確套打。
具體需求:將資料以excel檔案上傳,上傳成功先進行資料的展示,然後再存入資料庫中,接著進行資料的管理,包括:增刪改查以及列印。
所用技術:SpringBoot+MyBatis+Mysql
開發工具:eclipse
實現過程:
1、按照需求進行前端頁面的設計,總共有上傳、編輯、修改、管理以及列印五個主要頁面。
2、分工進行完成具體功能的實現。
3、測試功能。
詳細過程:
1、上傳資訊
在這裡插入圖片描述
這是最終的效果,選擇檔案上傳,提交後,經過後臺的處理,按照json格式將excel檔案的資訊資料傳到資料展示的區域,以供檢查資料是否正確,正確的話提交,否則就再次上傳檔案。
這裡前端用到了ajax進行資料互動

<script type="text/javascript">
    $("#submit").click(function () {//提交事件觸發該操作
    var formData = new FormData($("#fileForm")[0]);//表單id
        $.ajax({
            type:"post",
            data:formData,
            url: "/HR/Excel",//後臺處理上傳excel資料的介面
            processData:false,
            contentType:false,
            success:function(data){
                $("#showContent").html("");//在id=showContent的標籤下進行資料的展示
                //var json = JSON.parse(data);

                 for(var i=0;i<data.length;i++)
                {

                    $("#showContent").append('<tr class="text-center">'+'<td><input type="hidden" name="zhrtZjps['+i+'].zygxm" value="'+data[i].zygxm+'">'+data[i].zygxm+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zygxb" value="'+data[i].zygxb+'">'+data[i].zygxb+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zcsny" value="'+data[i].zcsny+'">'+data[i].zcsny+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zgzdw" value="'+data[i].zgzdw+'">'+data[i].zgzdw+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zwhcd" value="'+data[i].zwhcd+'">'+data[i].zwhcd+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zcszy" value="'+data[i].zcszy+'">'+data[i].zcszy+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zyzzg" value="'+data[i].zyzzg+'">'+data[i].zyzzg+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zxzzg" value="'+data[i].zxzzg+'">'+data[i].zxzzg+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zzzbh" value="'+data[i].zzzbh+'">'+data[i].zzzbh+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zzjpw" value="'+data[i].zzjpw+'">'+data[i].zzjpw+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zrdnd" value="'+data[i].zrdnd+'">'+data[i].zrdnd+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zpsnd" value="'+data[i].zpsnd+'">'+data[i].zpsnd+'</td>'+'<td><input type="hidden" name="zhrtZjps['+i+'].zgbwh" value="'+data[i].zgbwh+'">'+data[i].zgbwh+'</td></tr>')
                  
                }

                alert("請求成功");
            },
            error:function(e){
                alert("請求失敗");
                console.log(e);
            }
        });
    });
</script>

資料正確提交後,存入資料庫,並且進入到資料管理功能。
在這裡插入圖片描述
在該頁面可以進行資料的所有操作,包括增刪改查和列印,點選狀態,選擇可以按照資料狀態進行展示。

<!-- 處理狀態下拉框事件,顯示當前選擇的狀態的資料 -->
<script type="text/javascript">
   function selectCType(){
     
        //選擇每一個該class的span標籤進行處理  
      $("span[class='label label-danger']").each(function(){
     
        if($("#selectType").val() == $(this).text()){
          //是選中
           //如果當前span中內容的值和下拉框選擇的內容一樣
           //則選擇顯示該行的內容
           //也就是當前span的父標籤的父標籤的樣式display改為顯示樣式
           //本文標籤的等級:table->tr->td->span
          $(this).parent().parent().css("display","table-row");
        }else{
        //否則,就讓該行不顯示
          $(this).parent().parent().css("display","none");
          
        }
   
       });

    }
</script>

批量選擇input標籤進行提交的js:

<!-- 批量處理下發資料js,被選中的資料進行提交,為被選中的資料將name屬性去掉,就不能傳值了 -->
<script type="text/javascript">
   function xiafa(){
    
        //複選框的name,選擇每一個複選框進行處理
      $("input[name='checkItem']").each(function(){
        if($(this).prop("checked")){
          //是選中,如果當前的複選框是選中狀態,則進行以下操作
          $("input[name='checkItem']").removeAttr("name");
          $("input[name='checkAll']").removeAttr("name");
        }else{
         //如果當前複選框狀態是未選中,則將該行中所有的input標籤的name屬性移除
         //這樣就不會提交該行的資料了,選擇上上級標籤,通過find找到該上上級標籤
         //下的所有input標籤進行移除name屬性的操作
            $(this).parent().parent().find("input").removeAttr("name");
        }
   
       });

    }
</script>

點選列印按鈕,彈出視窗進行列印js:

   <script type="text/javascript">
   function openWin(url) {
	  var u = url;
	  window.open(u, 'newwindow', 'height=600, width=800, top=30%,left=30%, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
	}

	//當頁面滾動高度大於100時顯示出盒子
	$(function() {
	    $(window).scroll(function() {
	        var top = $(window).scrollTop();
	        if (top > 100) {
	            $('.myside').fadeIn(800);
	        } else {
	            $('.myside').fadeOut(800);
	        }
	    });
	})

 </script>

檢測表單提交的input資訊是否為空js:

 <!-- 檢測表單提交是否為空js-->
     <script type="text/javascript">
      function myCheck()
      {
      //form1為form表單的name值,檢測表單中每一個提交的資料是否包含值
        for(var i=0;i<document.form1.elements.length-1;i++)
        {
         if(document.form1.elements[i].value=="")
         {
           alert("當前表單不能有空項");
           document.form1.elements[i].focus();
           return false;
         }
        }
        return true;
        
      }
    </script>

複選框js:

 <script>
 $(function(){
 function initTableCheckbox() {
 var $thr = $('table thead tr');
 var $checkAllTh = $('<th width="30px"><input type="checkbox" id="checkAll" name="checkAll" /></th>');
 /*將全選/反選複選框新增到表頭最前,即增加一列*/
 $thr.prepend($checkAllTh);
 /*“全選/反選”複選框*/
 var $checkAll = $thr.find('input');
 $checkAll.click(function(event){
  /*將所有行的選中狀態設成全選框的選中狀態*/
  $tbr.find('input').prop('checked',$(this).prop('checked'));
  /*並調整所有選中行的CSS樣式*/
  if ($(this).prop('checked')) {
  $tbr.find('input').parent().parent().addClass('warning');
  } else{
  $tbr.find('input').parent().parent().removeClass('warning');
  }
  /*阻止向上冒泡,以防再次觸發點選操作*/
  event.stopPropagation();
 });
 /*點選全選框所在單元格時也觸發全選框的點選操作*/
 $checkAllTh.click(function(){
  $(this).find('input').click();
 });
 var $tbr = $('table tbody tr');
 var $checkItemTd = $('<td width="30px"><input type="checkbox" name="checkItem" /></td>');
 /*每一行都在最前面插入一個選中複選框的單元格*/
 $tbr.prepend($checkItemTd);
 /*點選每一行的選中複選框時*/
 $tbr.find('input').click(function(event){
  /*調整選中行的CSS樣式*/
  $(this).parent().parent().toggleClass('warning');

  /*如果已經被選中行的行數等於表格的資料行數,將全選框設為選中狀態,否則設為未選中狀態*/
  $checkAll.prop('checked',$tbr.find('input:checked').length == $tbr.length ? true : false);
  /*阻止向上冒泡,以防再次觸發點選操作*/
  event.stopPropagation();
 });
 /*點選每一行時也觸發該行的選中操作*/
 $tbr.click(function(){
  $(this).find('input').click();
 });
 }
 initTableCheckbox();
 });
 </script>

前端差不多重要的內容就這些,後端的處理都是用的封裝好的方法,這裡就不再進行講述了。