2016-08-17 2 views
0

국가 이름에 따라 통화를 변경하는 스크립트 만들기 문제가 발생했습니다. 나는 통화 변경 코드를 작성한 후 변경 기능 트리거 이후에 ​​통화를 변경했다. (아래 코드에 대해서는 여기에 페이지를 새로 고치려면 location.reload()를 작성한다.)창로드에 무한 루프 문제가 발생했습니다.

내 문제는 처음으로 창을로드 한 후 국가 이름에 따라 통화를 선택하십시오. 그러나 페이지를 무한대로 새로 고치고 있습니다. 페이지를 한 번만로드하려고합니다.

참고 : 여기 내 변경 기능이 문제를 해결할 수 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

윈도우로드 후에 변경 기능을 실행하고 싶지만 한 번만 실행합니다. 여기에 희망이 있습니다. – Johny