2017-05-29 4 views
0

次のようなコードがあります。最初に自動トリガーされたイベントの後に2番目のイベントをトリガーする方法

URLパラメータが取得され、URLパラメータに基づいてドロップダウンオプションが自動的に選択されるようにイベントを作成します。このイベントはOKになります。

// getURLParameter function [....] 

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

は、今では、実際に選択したオプションに基づいて、私の現在のページにデータを渡すために、AJAXリクエストを呼び出す2番目のイベントのトリガに従います。

これは、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がコードを選択するか疑問例えばtrigger方法、試してみてください

<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

次のようになります。

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リクエストを呼び出すイベントで2番目のイベントに捕捉される可能性があります。 – Vasikos

関連する問題