Змінити відкриту URL-адресу через select - jQuery


78

Який найкращий спосіб приєднати подію, щоб змінити параметр вибору URL-адреси Зберігати href в attr і захоплювати його на зміну?


Відповіді:


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

Я вже давно мав про це примітку (Див. Перегляд відповіді), але видалив її, оскільки bindне амортизується. Однак, оскільки я отримав цей коментар майже через день після його видалення, я повернув його назад зараз.
Меліджі

дякую, працює ідеально. Чи є спосіб зробити так, щоб у вікні вибору відображався вибраний параметр після запуску події зміни?
Toontje

Я думаю, якщо ви цього не зробите, return falseвін збереже вибраний варіант там.
Меліджі

Це працює. Просто хотів додати, що я спочатку спробував без косої риски / в кінці URL-адреси, і це не спрацювало. Мабуть, потрібна така коса риса.
Рейчел С.

174

Я думаю, це найпростіший спосіб:

<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 Я не впевнений, про що ти питаєш. Можливо, найкраще створити нове запитання.
Марк Ейріх

@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

3
"Джерело javascript тепер каже, що це придумали їх співробітники" "Anayways, ось воно, без JavaScript !!!" я зараз якось розгублений
Паулус

3
капелюх до вашої впевненості. "Я дам тобі найпростіший безкоштовно", ну! ...
Амріндер Сінгх,

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

5

Приклад JS Fiddle

$('#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 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-адреса ставила це значення параметра, я надам приклад u:

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

Чи можливо це спрацювати, коли користувачі натискають кнопку введення "Перейти"?
wordpressdev_meg

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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.