2010-06-19 8 views
5

Estoy tratando de escribir un pequeño fragmento que permita a un usuario ir, es decir, navegar a) una nueva url, basada en una selección de usuario en un control de selección de opción.jQuery para navegar a la página en la opción de selección

<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: Este no es un comportamiento AJAX que quiero, quiero que el navegador se comporte como si hubiera hecho clic en un enlace. He hecho esto antes, pero he olvidado cómo hacerlo. Tenía un vistazo a la documentación de jQuery y carga() no parece hacerlo - porque yo no quiero colocar el contenido de la página actual - Quiero:

  1. ir a una página completamente nueva
  2. pasar parámetros a la URL que estoy navegando a (por ejemplo, la identificación del elemento seleccionado

Respuesta

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

Esto también funciona con relativa URL:

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

Gracias He encontrado estos extremadamente útil! – alekwisnia

0

Para simplemente recargar la página, configure window.location.href en su URL. Para pasar los parámetros, construya una cadena de "nombre = valor & name = value" y vire al final. jQuery proporciona un método de "serialización" que hace que sea fácil hacer eso (como si fuera difícil comenzar).

1

supongo que esta es la manera óptima de hacerlo (basándose en la respuesta de Gert):

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