2014-01-22 75 views
2

自動運行我提取的代碼到一個名爲load_shipping_estimates功能:的Rails +的jQuery:JS功能保持在頁面加載

$(function() { 
    function load_shipping_estimates() { 
     var zip_code = $('#shipping_estimator_text_field').val(); 
     if (/^\d+$/.test(zip_code) && zip_code.length == 5) { 
      jQuery.ajax({ 
       url: '/checkout/estimate_shipping', 
       type: 'GET', 
       beforeSend: function() { $('.ajax_loader').show(); }, 
       complete: function() { $('.ajax_loader').hide(); }, 
       data: {"zip_code": zip_code}, 
       dataType: 'script' 
      }); 
      return false; 
     } else { 
      $('#estimator_error_message').html('Please enter a 5 digit zip code.'); 
      return false; 
     } 
    } 

     // it should only happen when I click on #estimate_shipping_link 
    $('.ajax_loader').hide(); 
    $('#estimate_shipping_link').on("click", load_shipping_estimates()); 


    }); 

它會持續,一旦頁面加載。從最後幾行可以看到,我只希望在用戶點擊鏈接時加載它。我該如何解決?我需要將它提取到一個函數,因爲我要在文件的其他地方重用它。

回答

1

要調用與load_shipping_estimates()上開始你的函數。

$('#estimate_shipping_link').on("click", load_shipping_estimates); 

應該做的伎倆:)

+0

有什麼區別?只要刪除'()'? – Edmund

+0

是的。用代碼括號可以調用一個函數。但是你想設置函數作爲點擊事件的回調:) - >無括號:) – Eich

0

整個命名函數被包裹在$(function() { });這使得在頁面加載它自身運行

除去第一和最後幾行,你應該是好