2017-05-29 244 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

相关问题