2010-06-19 71 views
5

页面我想写一个小片段,允许用户去导航到)一个新的URL,基于用户选择在选项选择控制。jQuery导航到选择选项

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

注:这不是AJAX的行为我想,我希望浏览器的行为,仿佛你已经点击了一个链接。我之前做过这些,但我忘记了如何去做。我查看了jQuery文档,并且load()似乎没有这样做 - 因为我不想将内容放在当前页面中 - 我想:

  1. 转到全新页面
  2. 传递参数的URL,我导航到(如所选项目的ID

回答

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

这也适用于相对URL:

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

谢谢你,我发现这是非常有用的! – alekwisnia 2012-12-05 15:52:38

0

要简单地重新加载页面,请将window.location.href设置为您的URL。要传递参数,请构建一个“name = value & name = value”的字符串并将其粘贴到最后。 jQuery提供了一个“序列化”的方法,可以很容易地做到这一点(就像很难开始)。

1

我想这是这样做的(基础上格特的答案)的最佳方式:

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