2016-08-17 4 views
0

Ich bin mit einem Problem fest, Erstellen eines Skripts, das die Währung nach Ländername ändert. Ich habe bereits den Währungsänderungscode geschrieben, der die Währung nach Änderungsfunktion triggert (für jetzt auf unter Code schreibe ich hier nur location.reload() zum Aktualisieren der Seite)Infinite Schleife Problem beim Laden des Fensters

Mein Problem ist, dass ich das möchte Wählen Sie die Währung nach dem Namen des Landes nach dem ersten Laden des Fensters ABER es wird die Seite unendlich aktualisiert. Ich möchte die Seite nur einmal laden.

HINWEIS: ich hier schreibe location.reload() nur für das Verständnis, dass meine Änderungsfunktion die Seite nicht aktualisieren (Wo ich bereits die Währung ändern Code geschrieben haben)

<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

Nur neugierig, warum laden Sie die Seite neu? – ThatAwesomeCoder

+0

Ich lade die Seite neu, um die Währung zu ändern, deshalb schreibe ich hier nur Seitenaktualisierungscode, nicht vollen Code. – Johny

Antwort

-1

trigger('change'); entfernen, wird das Problem lösen .

+0

Danke, aber ich weiß es schon. Die Änderungsfunktion, die ich geschrieben habe, funktioniert nur nach einer Seitenaktualisierung, weshalb ich die Änderungsfunktion nach dem Laden des Fensters auslöst. Mein einziges Problem ist diese Seite, die die unendliche Zeit der Seite auffrischt. – Johny

0

Versuchen Sie folgendes:

<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

Sie können trigger('change') entfernen Dies ist eine Lösung, weil Sie die Seite neu laden auf Änderungsereignis sind.

ABER, noch müssen Sie auslösen Ereignis auslösen können Sie tun, können Sie ausgelöstes Ereignis wie unten erwähnt erkennen.

$(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

Danke, Die Änderungsfunktion, die ich geschrieben habe, funktioniert nur nach einer Seitenaktualisierung, weshalb ich die Änderungsfunktion nach dem Laden des Fensters auslöst. Mein einziges Problem ist diese Seite es ist die Seite unendliche Zeit aktualisieren – Johny

+0

ja, scheint Ihr Code, wenn Land AUD ist es wird unendliche Zeit durch Trigger, die Sie auf Änderung in Erfolg Antwort gefeuert haben. –

+0

Ich möchte die Change-Funktion nach dem Laden des Fensters ausführen, aber nur einmal. Hoffentlich mache ich einen Sinn. – Johny

Verwandte Themen