2017-05-29 245 views
0

我有以下代碼,它的工作原理是這樣的;如何在第一次自動觸發事件後觸發第二個事件

我得到的URL參數,我做了一個事件,所以根據URL參數自動選擇下拉選項。這個事件觸發OK。

// getURLParameter function [....] 

setTimeout(function() { 
    var currencySelected = getUrlParameter('currency'); 
    $('#currency').val(currencySelected); 
    console.log('url currency is ' + currencySelected); 
}, 1500); 

現在它遵循第二事件觸發器這實際上是調用Ajax請求的基礎上選擇的選項將數據傳遞給我的當前頁面。

只有當我沒有基於getURLParameter創建第一個事件時,這個工作方式才起作用。在這兩種情況下,手動選擇下拉選項都會觸發

$('#currency').on('change', function() { 
    //console.log(JSON.stringify(id)); 
    console.log('on change triggered'); 
    myk = $("#currency").val(); 
    $.ajax({ 
     url: "/exchange_rates/" + myk, 
     type: "GET", 
     data: $(myk).serialize(), 
     dataType: 'json', 
     success: function(res) { 
      // my success stuff 
     }, 
     error: function(xhr, status, error) { 
      console.log(xhr.responseText); 
      return false; 
     } 
    }); 
}); 

如果想知道我的EJS選擇代碼看起來像

<select id="currency" name="currency" class="form-control"> 
    <option value="">Select currency</option> 
    <% for(var i=0; i<data.length; i++) {%> 
    <option value="<%=data[i].currency%>"><%=data[i].currency%></option> 
    <% } %> 
</select> 

的jQuery v2.1.4

回答

1

嘗試trigger方法,例如:

setTimeout(function() { 
    var currencySelected = getUrlParameter('currency'); 
    $('#currency').val(currencySelected); 
    console.log('url currency is ' + currencySelected); 

    $('#currency').trigger("change"); // manually fire the change event 

}, 1500); 
+0

是的它,我知道它甚至在嘗試之前就會工作。它沒有手動觸發觸發事件,所以它可以被調用ajax請求的事件順序抓住! – Vasikos

相關問題