通过选择Onchange打开URL-jQuery


Answers:


207

这很简单,让我们看一个工作示例:

<select id="dynamic_select">
  <option value="" selected>Pick a Website</option>
  <option value="http://www.google.com">Google</option>
  <option value="http://www.youtube.com">YouTube</option>
  <option value="https://www.gurustop.net">GuruStop.NET</option>
</select>

<script>
    $(function(){
      // bind change event to select
      $('#dynamic_select').on('change', function () {
          var url = $(this).val(); // get selected value
          if (url) { // require a URL
              window.location = url; // redirect
          }
          return false;
      });
    });
</script>

备注:


现代jQuery 1.7+版本将使用on()代替bind()。 $('#dynamic_select').on('change', function () {
epascarello 2013年

很久以前,我已经有一个注释(请参阅答案的修订版),但由于bind未进行折旧,因此将其删除。但是,由于我在删除评论后将近一天收到此评论,所以现在将其放回原处。
Meligy 2013年

谢谢,作品完美。更改事件触发后,是否有办法使选择框显示选定的选项?
Toontje

我认为,如果您不这样做return false,它将保留所选的选项。
Meligy 2015年

这可行。只是想补充一点,我首先在URL末尾没有斜杠/的情况下尝试了它,但是它不起作用。显然,它需要前面的斜线。
Rachel S

173

我认为这是最简单的方法:

<select onchange="if (this.value) window.location.href=this.value">
    <option value="">Pick one:</option>
    <option value="/foo">Foo</option>
    <option value="/bar">Bar</option>
</select>

嗨@Mark,当重定向该选项时,如何选择该选项,
jafar pinjar

@ jafar-pinjar我不确定您在问什么。最好创建一个新问题。
Mark Eirich

@MarkEirich,这里是我的问题stackoverflow.com/questions/54037550/...
贾法尔pinjar

11

抱歉,这里有很多代码在进行...

我将免费给您最简单的一个。我在2005年发明了它,尽管javascript来源现在说是由他们的员工提出的-一年多了!

无论如何,这里没有JavaScript !!!

<!-- Paste this code into the BODY section of your HTML document  -->
<select size="1" name="jumpit" onchange="document.location.href=this.value"> 
<option selected value="">Make a Selection</option>
<option value="http://www.javascriptsource.com/">The JavaScript Source</option>
<option value="http://www.javascript.com">JavaScript.com</option>
<option value="http://www.webdeveloper.com/forum/forumdisplay.php?f=3">JavaScript Forums</option>
<option value="http://www.scriptsearch.com/">Script Search</option>
<option value="http://www.webreference.com/programming/javascript/diaries/">The JavaScript Diaries</option>
</select> 

只需输入您喜欢的任何URL或相对URL(指向服务器上页面的位置),它将始终有效。


9
1.没有关于这一点的“发明”。2.如果您想为此花钱,我会感到震惊。3.我怀疑是否有人声称自己“想出来”。
Matsemann 2012年

3
“ javascript消息源说是他们的员工提出了”“ Analyways,这里是,没有javascript !!!” 我现在有点困惑
paulus 2012年

3
向您的信心致敬。“我将免费给你最简单的一个”,
aww

3
“没有javascript”-您认为document.location.href=this.value是什么?
JC

10

您可以使用jQuery使用此简单的代码片段从下拉菜单重定向。

<select id="dynamic-select">
    <option value="" selected>Pick a Website</option>
    <option value="http://www.google.com/">Google</option>
    <option value="http://www.youtube.com/">YouTube</option>
    <option value="http://www.stackoverflow.com/">Stack Overflow</option>
</select>

<script>
    $('#dynamic-select').bind('change', function () { // bind change event to select
        var url = $(this).val(); // get selected value
        if (url != '') { // require a URL
            window.location = url; // redirect
        }
        return false;
    });
</script>

1
您可以替换$(this).val()使用this.value,并url != ''url !== ''
rahul

5

这是我会做的

<select id="urlSelect" onchange="window.location = jQuery('#urlSelect option:selected').val();">
 <option value="http://www.yadayadayada.com">Great Site</option>
 <option value="http://www.stackoverflow.com">Better Site</option>
</select>

2
使用jQuery onchange =“ window.location = this.value;”,您可以轻松得多。
hywak 2014年

5

JS小提琴示例

$('#userNav').change(function() {
window.location = $(':selected',this).attr('href')
});




<select id="userNav">
<option></option>
<option href="http://google.com">Goolge</option>
<option href="http://duckduckgo.com">Go Go duck</option>
</select>

这适用于选定选项中的href


4

其他方式:

    <script type="text/javascript">
        function change_url(val) {
            window.location=val;
        }
    </script>            
    <select style="width:130px;" onchange="change_url(this.value);">
            <option value="http://www.url1.com">Option 1</option>
            <option value="http://www.url2.com">Option 2</option>
     </select>

3

我相信在select选项卡中重新定义位置的最简单方法如下:

<select onchange="location = this.value;">
     <option value="https://www.google.com/">Home</option>
     <option value="https://www.bing.com">Contact</option>
     <option value="mypets.php">Sitemap</option>
</select>

3

超级简单的方法如下。无需创建函数。

<select onchange="window.location = this.options[this.selectedIndex].value">
    <option value="">Switch Language</option>
    <option value="{{ url('/en') }}">English</option>
    <option value="{{ url('/ps') }}">پښتو</option>
    <option value="{{ url('/fa') }}">دری</option>
</select>

2

如果您不希望url将其放在选项的值上,我将举个例子:

<select class="abc">
    <option value="0" href="hello">Hell</option>
    <option value="1" href="dello">Dell</option>
    <option value="2" href="cello">Cell</option>
</select>

    $("select").bind('change',function(){
        alert($(':selected',this).attr('href'));
    })

2
<select name="xx" class="xxx" onchange="_name(this.options[this.selectedIndex].value,this.options[this.selectedIndex].getAttribute('rel'))">
  <option value="x" rel="xy">aa</option>
  <option value="xxx" rel="xyy">bb</option>
</select>


//for javascript
function _name(value,rel) {
alert(value+"-"+rel);
}

1

试试这个代码,它的工作完美

<script>
$(function() {

    $("#submit").hide();

    $("#page-changer select").change(function() {
        window.location = $("#page-changer select option:selected").val();
    })

});
</script>

<?php
    if (isset($_POST['nav'])) {
         header("Location: $_POST[nav]");
    }
?>
<form id="page-changer" action="" method="post">
    <select name="nav">
        <option value="">Go to page...</option>
        <option value="http://css-tricks.com/">CSS-Tricks</option>
        <option value="http://digwp.com/">Digging Into WordPress</option>
        <option value="http://quotesondesign.com/">Quotes on Design</option>
    </select>
    <input type="submit" value="Go" id="submit" />
</form>

1
**redirect on change option with jquery** 

 <select id="selectnav1" class="selectnav">
            <option value="#">Menu </option>
            <option value="   https://www.google.com">
            Google
            </option>
            <option value="http://stackoverflow.com/">
              stackoverflow
            </option>

         </select>

<script type="text/javascript">
   $(function () {

        $('#selectnav1').change( function() {
      location.href = $(this).val();
   });
   });
</script>

1

尝试使用此代码可正常运行Firefox,Chrome,IE

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
<option value="" selected>---Select---</option>
<option value="https://www.google.com">Google</option>
<option value="https://www.google.com">Google</option>
<option value="https://www.google.com">Google</option>
<option value="https://www.google.com">Google</option>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.