2010-06-19 6 views
5

J'essaie d'écrire un petit extrait qui permet à un utilisateur d'aller à) une nouvelle URL, basée sur une sélection d'utilisateur dans un contrôle de sélection d'option.jQuery pour naviguer vers la page dans l'option de sélection

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

Note: Ce n'est pas le comportement AJAX que je veux, je veux que le navigateur se comporter comme si vous aviez cliqué sur un lien hypertexte. J'ai déjà fait cela, mais j'ai oublié comment le faire. J'ai eu un coup d'œil à la documentation jQuery, et la charge() ne semble pas le faire - parce que je ne veux pas placer le contenu dans la page en cours - je veux:

  1. aller à une toute nouvelle page
  2. passer des paramètres à l'URL que je navigue en direction (par exemple l'identifiant de l'élément sélectionné

Répondre

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

Cela fonctionne aussi avec l'URL relative:

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

Merci j'ai trouvé ces très utile! – alekwisnia

0

Pour simplement recharger la page, définissez window.location.href sur votre URL. Pour passer des paramètres, créez une chaîne de "name = value & name = value" et amenez-la à la fin. jQuery fournit une méthode de "serialisation" qui facilite la tâche (comme si c'était difficile au début).

1

Je suppose que cela est la meilleure façon de le faire (se basant sur la réponse de Gert):

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