2014-10-09 37 views
0

我有一些JavaScript代碼段,我需要簡化。變量和大部分邏輯在4個部分中都是相同的,我怎樣才能簡化它?重複的JavaScript部分 - 如何整合?

$(document).ready(function() { 
    $("#search").click(function (e) { 
     var ifecha = $("#to").val(); 
     var efecha = $("#from").val(); 
     var prov = $("#CustomerID").val(); 
     var stat = $("#status").val(); 
     if (stat != "Select an Option") { 
     stat = stat; 
     } 
     else { 
     stat = 3; 
     } 
     var anul = $("#anulada").val(); 
     if (anul != "Select an Option") { 
     anul = anul; 
     } 
     else { 
     anul = ""; 
     } 

    $.ajax({ 
     type: "GET", 
     data: { to: ifecha, from: efecha, code: prov, anulada: anul, status: stat, take: 0 }, 
     url: '@Url.Action("proposalReport")', 
     dataType: "html", 
     success: function (result) { success(result); } 
    }); 

    function success(result) { 
     $("#dataReport").html(result); 
     } 
     e.preventDefault(); 
    }); 

    $("#pdf").click(function (e) { 
     var ifecha = $("#to").val(); 
     var efecha = $("#from").val(); 
     var prov = $("#CustomerID").val(); 

     var stat = $("#status").val(); 
     if (stat != "Select an Option") { 
     stat = stat; 
     } 
     else { 
     stat = 3; 
     } 

     var anul = $("#anulada").val(); 
     if (anul != "Select an Option") { 
     anul = anul; 
     } 
     else { 
     anul = ""; 
     } 

     var rep = "PDF" 
     e.preventDefault(); 
     window.location = 'PrintPDF?report=' + rep + '&to=' + ifecha + '&from=' + efecha + '&code=' + prov + '&anulada=' + anul + '&status=' + stat; 
    }); 

    $('#lnkView').click(function (e) { 
     var ifecha = $("#to").val(); 
     var efecha = $("#from").val(); 
     var prov = $("#CustomerID").val(); 

     var stat = $("#status").val(); 
     if (stat != "Select an Option") { 
     stat = stat; 
     } 
     else { 
     stat = 3; 
     } 

     var anul = $("#anulada").val(); 
     if (anul != "Select an Option") { 
     anul = anul; 
     } 
     else { 
     anul = ""; 
     } 
     e.preventDefault(); 
     window.open('ReportPrint?to=' + ifecha + '&from=' + efecha + '&code=' + prov + '&anulada=' + anul + '&status=' + stat); 
    }); 

    $("#excel").click(function (e) { 
     var ifecha = $("#to").val(); 
     var efecha = $("#from").val(); 
     var prov = $("#CustomerID").val(); 

     var stat = $("#status").val(); 
     if (stat != "Select an Option") { 
     stat = stat; 
     } 
     else { 
     stat = 3; 
     } 

     var anul = $("#anulada").val(); 
     if (anul != "Select an Option") { 
     anul = anul; 
     } 
     else { 
     anul = ""; 
     } 

     var rep = "PDF" 
     e.preventDefault(); 
     window.location = 'ExportToXLS?report=' + rep + '&to=' + ifecha + '&from=' + efecha + '&code=' + prov + '&anulada=' + anul + '&status=' + stat; 
    }); 
}); 

var sorter_options = { 
    headers: { 
     3: { sorter: 'datetime' }, 
     4: { sorter: 'decimal' }, 
     5: { sorter: 'decimal' } 
    } 
} 
+0

燦元素的值(#to,#from,#CustomerID,#status)更改或在頁面加載後保持不變? – chiapa 2014-10-09 11:26:27

+0

更改@chiapa,從詹姆斯看到解決方案,謝謝你問我的朋友 – 2014-10-09 11:37:08

+0

是的,一個很好的答案。 +1爲James – chiapa 2014-10-09 12:01:11

回答

3

您可以同時綁定到所有四個ID,並結合常見的邏輯,那麼就切換出相關位取決於得到了點擊一下ID:

$(document).ready(function() { 
    $("#search, #pdf, #lnkView, #excel").click(function(e) { 
     var ifecha = $("#to").val(); 
     var efecha = $("#from").val(); 
     var prov = $("#CustomerID").val(); 
     var stat = $("#status").val(); 
     if (stat != "Select an Option") { 
      stat = stat; 
     } else { 
      stat = 3; 
     } 
     var anul = $("#anulada").val(); 
     if (anul != "Select an Option") { 
      anul = anul; 
     } else { 
      anul = ""; 
     } 

     switch ($(this).attr('id')) { 
     case 'search': 
      $.ajax({ 
       type: "GET", 
       data: { to: ifecha, from: efecha, code: prov, anulada: anul, status: stat, take: 0 }, 
       url: '@Url.Action("proposalReport")', 
       dataType: "html", 
       success: function(result) { $("#dataReport").html(result); } 
      }); 
      break; 
     case 'pdf': 
      var rep = "PDF" 
      window.location = 'PrintPDF?report=' + rep + '&to=' + ifecha + '&from=' + efecha + '&code=' + prov + '&anulada=' + anul + '&status=' + stat; 
      break; 
     case 'lnkView': 
      window.open('ReportPrint?to=' + ifecha + '&from=' + efecha + '&code=' + prov + '&anulada=' + anul + '&status=' + stat); 
      break; 
     case 'excel': 
      var rep = "PDF" 
      window.location = 'ExportToXLS?report=' + rep + '&to=' + ifecha + '&from=' + efecha + '&code=' + prov + '&anulada=' + anul + '&status=' + stat; 
      break; 
     } 


     e.preventDefault(); 
    }); 
}); 
+0

謝謝@JamesThorpe的幫助,完美地工作...... – 2014-10-09 11:34:17