2016-08-17 9 views
0

問題が発生しました。国名に応じて通貨を変更するスクリプトが作成されました。私はすでに変更機能のトリガー後に通貨を変更する通貨変更コードを書いています(ここではコードを書きます)。ウィンドウロード時の無限ループ問題

私の問題はそれです最初にウィンドウを読み込んだ後に国名に従って通貨を選択しますが、ページを無限に更新しています。ページを1回だけ読み込みたいとします。

注:私はここに私の変更機能は、問題を解決するtrigger('change');を削除する(私はすでに通貨の変更コードを書かれている)ページ

<html> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $.getJSON("http://freegeoip.net/json/", function (data) { 
     var country = data.country_name; 
     //alert(country); 
     if (country=="Australia"){ 
     $("option[value='AUD']").attr('selected','selected').trigger('change'); 
     } 
     }); 

     //change function 
     $("#edit-selected-currency").change(function(){ 
     location.reload(); 
     }); 

     }); 
    </script> 
</head> 
    <body> 
     <select id="edit-selected-currency" name="selected_currency" > 
     <option value="AUD">AUD</option> 
     <option value="INR" >INR</option> 
     <option value="USD">USD</option> 
     </select> 
    </body> 
</html> 
+0

なぜ、あなたはページを再読み込みしていますか? – ThatAwesomeCoder

+0

通貨を変更するためにページをリロードしています。ここで私はここでページリフレッシュコードをフルコードで書いているに過ぎません。 – Johny

答えて

-1

を更新しないことを理解するためのlocation.reloadを()書いています。

+0

ありがとうございますが、私はすでにそれを知っています。私が書いた変更機能は、ページをリフレッシュした後にしか機能しません。なぜなら、ウィンドウロード後に変更機能をトリガーする理由です。私の唯一の問題は、そのページがページの無限の時間をリフレッシュしていることです。 – Johny

0

これを試してみてください:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $.getJSON("http://freegeoip.net/json/", function (data) { 
     var country = data.country_name; 
     //alert(country); 
     if (country=="Australia"){ 
     $("option[value='AUD']").attr('selected','selected').trigger('change'); 
//change function 
     $("#edit-selected-currency").change(function(){ 
     location.reload(); 
     }); 
     } 
     }); 



     }); 
    </script> 
0

あなたが変更イベントにリロードページであるため、これが解決策であるtrigger('change')を削除することができます。

しかし、まだトリガーイベントを発生させる必要がある場合は、下記のようにトリガーイベントを検出できます。

$(document).ready(function(){ 
    $.getJSON("http://freegeoip.net/json/", function (data) { 
     var country = data.country_name; 
     //alert(country); 
     if (country=="Australia"){ 
      $("option[value='AUD']").attr('selected','selected').trigger('change','triggered'); 
     } 
    }); 

    //change function 
    $("#edit-selected-currency").change(function(e,x){ 
     if(x=='triggered') 
     { 
      // it is from trigger 
     } 
     else 
     { 
      // here x is undefined 
      location.reload(); 
     } 
    }); 

}); 
+0

ありがとうございました。私が書いた変更機能は、ページをリフレッシュした後にしか動作しません。なぜ、ウィンドウロード後に変更機能をトリガーするのですか?私の唯一の問題は、そのページが無限の時間をリフレッシュしていることです。 – Johny

+0

はい、あなたのコードは国がAUDの場合、成功応答の変化に応じて発火したトリガーによって無限の時間になります。 –

+0

ウィンドウロードの後に​​change関数を実行したいですが、一度だけです。ここに私は何らかの意味を持っています。 – Johny