2014-10-09 3 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

+0

@chiapa 변경, 제임스의 솔루션을 참조하십시오, 내 친구에게 물어 줘서 고마워요 –

+0

네, 좋은 대답. +1 제임스 – chiapa

답변

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, 완벽하게 작동 ... –

관련 문제