Forum Moderators: open

Message Too Old, No Replies

How to turn a select box into a menu?

         

kapow

4:37 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Can someone help me with the javascript code to turn a drop-down-select-box into a menu?

ie how do I get the following to link to the page when selected?

<select name="Menu">
<option value="page1.htm">page 1</option>
<option value="page2.htm">page 2</option>
<option value="page3.htm">page 3</option>
</select>

Would it use some kind of onChange like this:
onChange="javascript:window.location.href='...'

Birdman

4:55 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You got it. Even easier would be a little function() placed in the <head>.

<script type="text/javascript">
function go(where){
window.location.href=where;
}
</script>

<select name="Menu" onchange="go(this)">
<option value="page1.htm">page 1</option>
<option value="page2.htm">page 2</option>
<option value="page3.htm">page 3</option>
</select>

kapow

5:10 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Hi Birdman

I'm not very good at javascript!

ok, it tried it, I just get an error message in the browser.
Somtimes it says '...undefined'
other times it says 'mysite\[object]'

I put this in the body:
<select name="Menu" onchange="go(this)">
<option value="index.html">Home</option>
<option value="page2.htm">Page 1</option>
<option value="page3.htm">Page 2</option>
</select>

I put this in the head:
<script type="text/javascript">
function go(where){
window.location.href=where;
}
</script>

Birdman

5:31 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Ah sorry, typo.

Replace this line:

<select name="Menu" onchange="go(this)">

With:

<select name="Menu" onchange="go(this.value)">

kapow

5:38 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Wonderful! you saved me again Birdman.
Thank you.

kapow

5:41 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Hmmm

How would you have a top option that doesn't do anything?
e.g.

<option value="self">Pick an option</option>

dcrombie

5:46 pm on Dec 23, 2003 (gmt 0)



That will work in IE, but, according to the standards, this.value is not defined for SELECT boxes.
The code you want is:

<SELECT onChange="self.location.href=options[selectedIndex].value;">
...
</SELECT>

kapow

5:55 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Dcrombie

Yes, I see that works too.

How would you have a top option in the select box that doesn't do anything?
e.g.

<option value="self">Pick an option</option>

Birdman

5:59 pm on Dec 23, 2003 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



I would just add a conditional if statement to have an option to stay put.

function go(where){
if (where!= "self") window.location.href=where;
}

Also, you can change the event handler to, as I'm sure dcrombie is correct:

<select name="Menu" onchange="go(options[selectedIndex].value)">