2016-09-30 112 views
0

我有一個onchange函數從html選擇中獲取一個值。值傳遞正常。但是,當我嘗試將值傳遞給我的數據表時,它不起作用。將Jquery變量傳遞給Datatable

我需要「mRender」:函數(數據,類型,行)內的頁面變量以基於選擇下拉列表中的當前值。

<select multiple class="selectpicker" data-width="80px" data-style="btn-info" data-actions-box="true" id="multipleSelect" name="multipleSelect" > 
     <option disabled selected> Pages </option> 
     <option value="1" selected>Haight Cover Sheet</option> 
     <option value="2" selected>Set Cover Sheet</option> 
     <option value="3" selected>Roofing Work Order</option> 
     <option value="4" selected>Roofing Subcontractor Pay Request</option> 
     <option value="5" selected>Job Site Hazard Assessment Roofing</option> 
     <option value="6" selected>Job Site Checklist Roofing</option> 
     <option value="7" selected>Subcontractor Checklist Roofing</option> 
     <option value="8">Siding Work Order</option> 
     <option value="9">Siding Subcontractor Pay Request</option> 
     <option value="10">Job Site Hazard Assessment Siding</option> 
     <option value="11">Job Site Checklist Siding</option> 
     <option value="12">Subcontractor Checklist Siding</option> 
     <option value="13">Gutters Work Order</option> 
     <option value="14">Gutter Subcontractor Pay Request</option> 
     <option value="15" selected>Magnet Sheets</option> 
    </select> 
    <table width="100%" class="table table-striped table-bordered table-hover" id="workorder"> 
     <thead> 
     <tr> 
      <th>Actions</th> 
      <th>First Name</th> 
      <th>Last Name</th> 
      <th>Roof Contract</th> 
      <th>Siding Contract</th> 
      <th>Gutter Contract</th> 
     </tr> 
     </thead> 
     <tbody> 
     </tbody> 
    </table> 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var pages ={}; 
     $('select').on('change', function() { 
      pages = $('#multipleSelect').val(); 
     }); 
     $('#workorder').DataTable({ 
      //display columns 
      "columns": [ 
       //display action buttons 
       {"mData": "idWorkOrder", 
        "mRender": function (data, type, row) { 
         return '<a href="'+pages+'" data-toggle="tooltip" title="PRINT" target="_blank"><button class="btn btn-info btn-sm"><span class="glyphicon glyphicon-print" aria-hidden="true"></span></button></a>'+ 
          '<a href=update.php?idWorkOrder='+row.idWorkOrder+' data-toggle="tooltip" title="EDIT"><button class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></button></a>'+ 
          '<a href=delete.php?idWorkOrder='+row.idWorkOrder+' data-toggle="tooltip" title="DELETE"><button class="btn btn-danger btn-sm"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></button></a>'; 
        } 
       }, 
       {"data": "cFirstName"}, 
       {"data": "cLastName"}, 
       {"data": "wRoofContract", render: $.fn.dataTable.render.number(',', '.', 0, '$')}, 
       {"data": "wSidingContract", render: $.fn.dataTable.render.number(',', '.', 0, '$')}, 
       {"data": "wGutterContract", render: $.fn.dataTable.render.number(',', '.', 0, '$')} 
      ], 
      "processing": true, 
      "serverSide": true, 
      "responsive": true, 
      "ajax": { 
       url: 'datatables.php', 
       type: 'POST' 
      } 
     }); 
    }); 
</script> 

回答

0

我能通過將值保存到隱藏輸入來解決問題。

   <select multiple class="selectpicker" data-width="80px" data-style="btn-info" data-actions-box="true" id="multipleSelect" name="multipleSelect" > 
        <option disabled selected> Pages </option> 
        <option value="1" selected>Haight Cover Sheet</option> 
        <option value="2" selected>Set Cover Sheet</option> 
        <option value="3" selected>Roofing Work Order</option> 
        <option value="4" selected>Roofing Subcontractor Pay Request</option> 
        <option value="5" selected>Job Site Hazard Assessment Roofing</option> 
        <option value="6" selected>Job Site Checklist Roofing</option> 
        <option value="7" selected>Subcontractor Checklist Roofing</option> 
        <option value="8">Siding Work Order</option> 
        <option value="9">Siding Subcontractor Pay Request</option> 
        <option value="10">Job Site Hazard Assessment Siding</option> 
        <option value="11">Job Site Checklist Siding</option> 
        <option value="12">Subcontractor Checklist Siding</option> 
        <option value="13">Gutters Work Order</option> 
        <option value="14">Gutter Subcontractor Pay Request</option> 
        <option value="15" selected>Magnet Sheets</option> 
       </select> 
       <table width="100%" class="table table-striped table-bordered table-hover" id="workorder"> 
        <thead> 
        <tr> 
         <th>Actions</th> 
         <th>First Name</th> 
         <th>Last Name</th> 
         <th>Roof Contract</th> 
         <th>Siding Contract</th> 
         <th>Gutter Contract</th> 
        </tr> 
        </thead> 
        <tbody> 
        </tbody> 
       </table> 
      </div> 

      <script type="text/javascript"> 
       $(document).ready(function() { 
        var pages =[]; 
        $('select').on('change', function() { 
         pages = $('#multipleSelect').val(); 
         $("#pages").val($('#multipleSelect').val()); 
        }); 
        $('#workorder').DataTable({ 
         //display columns 
         "columns": [ 
          //display action buttons 
          {"mData": "idWorkOrder", 
           "mRender": function (data, type, row) { 
            return '<form action="print.php" method="post"><input hidden name="idWorkOrder" value="'+row.idWorkOrder+'"><input hidden name="pages[]" id="pages" value="'+pages+'"> <a href="'+pages+'" data-toggle="tooltip" title="PRINT" target="_blank"><button class="btn btn-info btn-sm"><span class="glyphicon glyphicon-print" aria-hidden="true"></span></button></a></form>'+ 
             '<a href=update.php?idWorkOrder='+row.idWorkOrder+' data-toggle="tooltip" title="EDIT"><button class="btn btn-warning btn-sm"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></button></a>'+ 
             '<a href=delete.php?idWorkOrder='+row.idWorkOrder+' data-toggle="tooltip" title="DELETE"><button class="btn btn-danger btn-sm"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></button></a>'; 
           } 
          }, 
          {"data": "cFirstName"}, 
          {"data": "cLastName"}, 
          {"data": "wRoofContract", render: $.fn.dataTable.render.number(',', '.', 0, '$')}, 
          {"data": "wSidingContract", render: $.fn.dataTable.render.number(',', '.', 0, '$')}, 
          {"data": "wGutterContract", render: $.fn.dataTable.render.number(',', '.', 0, '$')} 
         ], 
         "processing": true, 
         "serverSide": true, 
         "responsive": true, 
         "ajax": { 
          url: 'datatables.php', 
          type: 'POST' 
         } 
        }); 
       }); 
      </script>