2014-10-09 4 views
0

У меня есть несколько разделов кода в JavaScript, которые мне нужно упростить. Переменные и большая часть логики одинаковы в каждом из четырех разделов, как я могу ее упростить?Повторный раздел 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 для James – chiapa

ответ

3

Вы можете связать со всеми четырьмя идентификаторами сразу и объединить общую логику, а затем просто перейти из соответствующего бита в зависимости от идентификатора, что получил щелкнул:

$(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 за вашу помощь, отлично работайте ... –

Смежные вопросы