2010-06-19 9 views
5

Ich versuche, ein kleines Snippet zu schreiben, das es einem Benutzer ermöglicht, zu einer neuen URL zu wechseln, d. H. Basierend auf einer Benutzerauswahl in einem Optionsauswahlsteuerelement.jQuery zum Navigieren zu Seite in Option

<script type="text/javascript"> 
/* <[CDATA[ */ 
jQuery.noConflict(); 
jQuery(document).ready(function(){ 
    var id = jQuery($this).val(); 
    var url = some_Lookup_func(id); 
    jQuery("#the_id").change(function() { /* how do I navigate the browser to 'url' ?*/); 
}); 
/* ]]> */ 
</script> 

Hinweis: Dies ist kein AJAX-Verhalten Ich möchte, dass der Browser so verhält, als ob Sie auf einen Hyperlink geklickt hätten. Ich habe das schon einmal gemacht, aber ich habe vergessen, wie es geht. Ich hatte einen Blick auf der jQuery docs und Last() scheint nicht, es zu tun - denn ich will nicht den Inhalt in der aktuellen Seite platzieren - Ich mag:

  1. geht auf eine völlig neue Seite
  2. Pass Parameter auf die uRL, die ich bin der Navigation (zB die ID des ausgewählten Elements

Antwort

6

jQuery

var YourParam="sunshine"; 

$(document).ready(function() { 
    $("#goto").change(function(){ 
    if ($(this).val()!='') { 
     window.location.href=$(this).val()+"?param="+YourParam; 
    } 
    }); 
}); 

HTML

<form action="whatever.shtml" method="post" enctype="multipart/form-data"> 
    <select id="goto"> 
    <option value="">Go somewhere...</option> 
    <option value="http://cnn.com/">CNN</option> 
    <option value="http://disney.com/">Disney</option> 
    <option value="http://stackoverflow.com/">stackoverflow</option> 
    <option value="http://ironmaiden.com/">Iron Maiden</option> 
    </select> 
</form> 
3
window.location.href = 'http://example.com/newlocation?param1=value1'; 

Dies funktioniert auch mit relativ url:

window.location.href = '/newlocation?param1=value1'; 
+0

Vielen Dank ich diese äußerst nützlich gefunden! – alekwisnia

0

Um die Seite einfach neu zu laden, setzen Sie die window.location.href auf Ihre URL. Um Parameter zu übergeben, erstellen Sie eine Zeichenfolge "Name = Wert & Name = Wert" und heften Sie es auf das Ende. jQuery bietet eine "serialize" -Methode, die es einfach macht (als ob es schwer wäre, damit zu beginnen).

1

Ich denke, dies ist der optimale Weg ist, dies zu tun (auf Gert Antwort stützt):

$(document).on('change','#goto', function(event){ 
    if ($(event.target).val()!='') { 
     window.location.href=$(event.target).val(); 
    } 
    }); 
Verwandte Themen