What would be the best way to attach an event so on change of a select option a URL. Store the href in an attr and grab it on change?
14 Answers
It is pretty simple, let's see a working example:
<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>
$(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;
});
});
<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 src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"
></script>
.
Remarks:
- The question specifies jQuery already. So, I'm keeping other alternatives out of this.
- In older versions of jQuery (< 1.7), you may want to replace
onwithbind. - This is extracted from JavaScript tips in Meligy’s Web Developers Newsletter.
.
- 35,654
- 11
- 85
- 109
-
Modern jQuery 1.7+ versions would use on() instead of bind(). `$('#dynamic_select').on('change', function () {` – epascarello Jun 18 '13 at 13:17
-
I already had a note about this long time ago (See revisions of the answer), but removed it since `bind` is not depreciated. However, since I got this comment almost a day after I removed it, I put it back now. – Meligy Jun 18 '13 at 23:47
-
thanks, works perfect. Is there a way to make the select box show the selected option after the change event has fired? – Toontje Sep 15 '15 at 09:23
-
I think if you don't `return false` it will keep the selected option there. – Meligy Sep 16 '15 at 02:23
-
This works. Just wanted to add that I first tried it without a slash / at the end of the URL and it did not work. It apparently needs that forward slash. – Rachel S Jun 16 '16 at 15:40
-
It seems to work just fine for me http://embed.plnkr.co/XDkc4h5M4nVJS22RwK7u/ -- I changed the StackOverflow link because in this sample the page opens in an iframe, and StackOverflow doesn't like to opened in a frame for some security reason! – Meligy Jun 16 '16 at 16:00
-
I think this is the simplest way:
<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>
- 10,016
- 2
- 25
- 27
-
hi @Mark, how to make the option is selected, when it is redirected, – Jafar Pinjar Jan 04 '19 at 11:13
-
@jafar-pinjar I'm not sure what you're asking. Probably best to create a new question. – Mark Eirich Jan 04 '19 at 19:10
-
@MarkEirich, here is my question https://stackoverflow.com/questions/54037550/redirect-issue-in-select-element – Jafar Pinjar Jan 05 '19 at 05:23
Sorry, but there's to much coding going on here ...
I'll give the simplest one to you for free. I invented it back in 2005, although the javascript source now says it was their staff who came up with it - more than a year later!
Anyway, here it is, no 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>
Just type in any URL you like, or a relative URL (to the pages location on server), it will always work.
- 11,690
- 8
- 54
- 87
- 179
- 1
- 2
-
91. There is nothing 'invented' about this. 2. I would be shocked if you wanted money for this. 3. I doubt anyone else claims to have "come up with it". – Matsemann Jun 18 '12 at 12:31
-
3"javascript source now says it was their staff who came up with it" "Anayways, here it is, no javascript !!!" i'm kinda confused now – paulus Jul 19 '12 at 16:51
-
3hats off to your confidence. "I'll give the simplest one to you for free", aww!... – Amrinder Singh Oct 18 '14 at 12:41
-
5"no javascript" - what do you think `document.location.href=this.value` is? – J.C Sep 19 '19 at 08:42
You can use this simple code snippet using jQuery to redirect from a drop down menu.
<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>
- 2,945
- 17
- 20
-
1You can replace `$(this).val()` with `this.value` and `url != ''` with `url !== ''`. – rahul Mar 01 '11 at 04:34
Here's how i'd do it
<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>
- 14,467
- 16
- 59
- 76
-
3You can do it much easier wihout jQuery onchange="window.location = this.value;" – hywak Dec 29 '14 at 18:17
I believe the simplest way to redefine a location inside select tab is as follows:
<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>
- 161
- 2
- 4
Super easy way is as following. No need to create a function.
<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>
- 221
- 3
- 11
$('#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>
This works for the href in an option that is selected
- 172
- 3
- 9
Another way:
<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>
- 5,055
- 4
- 49
- 49
<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);
}
- 21
- 1
Try this code its working perfect
<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>
- 21
- 3
-
Is it possible for this to work once the users clicks the 'Go' input button? – wordpressdev_meg Dec 01 '20 at 10:33
If you don't want the url to put it on option's value, i'll give u example :
<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'));
})
- 6,562
- 3
- 25
- 33
**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>
- 818
- 8
- 13
Try this code its working 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>
- 29
- 1
- 6