2010-06-19 11 views
5

Sto provando a scrivere un piccolo frammento che consente a un utente di andare a navigare ad un nuovo URL, in base alla selezione di un utente in un'opzione di controllo.jQuery per navigare verso la pagina in seleziona l'opzione

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

Nota: Questo non è un comportamento AJAX che voglio, voglio il browser a comportarsi come se aveste cliccato su un collegamento ipertestuale. L'ho già fatto prima, ma ho dimenticato come farlo. Ho dato un'occhiata ai documenti jQuery, e load() non sembra farlo - perché non voglio mettere il contenuto della pagina corrente - Voglio:

  1. vai a una pagina completamente nuova
  2. parametri passaggio URL che sto navigazione verso (ad esempio, l'id della voce selezionata

risposta

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'; 

Questo funziona anche con l'URL relativo:

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

Grazie Ho trovato queste estremamente utile! – alekwisnia

0

Per ricaricare semplicemente la pagina, impostare window.location.href sul proprio URL. Per passare i parametri, crea una stringa di "nome = valore & nome = valore" e fissalo alla fine. jQuery fornisce un metodo "serializza" che rende facile farlo (come se fosse difficile iniziare).

1

Credo che questo è il modo ottimale di farlo (basandosi sulla risposta di Gert):

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