使用<option>标签中的href链接

我有以下的HTML代码:

<select name="forma"> <option value="Home">Home</option> <option value="Contact">Contact</option> <option value="Sitemap">Sitemap</option> </select> 

我如何使主页联系人站点地图值作为链接? 我用下面的代码,因为我预料它不工作:

 <select name="forma"> <option value="Home"><a href="home.php">Home</a></option> <option value="Contact"><a href="contact.php">Contact</a></option> <option value="Sitemap"><a href="sitemap.php">Sitemap</a></option> </select> 
 <select name="forma" onchange="location = this.value;"> <option value="Home.php">Home</option> <option value="Contact.php">Contact</option> <option value="Sitemap.php">Sitemap</option> </select> 

更新(2015年11月):在这个时代,如果你想有一个下拉菜单有很多可以更好的方法来实现一个。 这个答案直接回答了一个直接的问题,但是我不主张这个方法面向公众。

你不能使用带有选项标签的href标签。 你将需要JavaScript来这样做。

 <select name="formal" onchange="javascript:handleSelect(this)"> <option value="home">Home</option> <option value="contact">Contact</option> </select> <script type="text/javascript"> function handleSelect(elm) { window.location = elm.value+".php"; } </script> 

使用一个真正的下拉菜单,而不是:列表( ulli )和链接。 切勿误用表单元素作为链接。

屏幕阅读器的读者通常会扫描一个自动生成的链接列表 – 这些链接会错过这些重要的信息。 许多键盘导航系统(例如JAWS,Opera)为链接和表单元素提供了不同的键盘快捷键。

如果你仍然不能放弃select的想法,至less不要使用onchange处理程序。 这对键盘用户来说是一个真正的痛苦,它使得你的第三个项目几乎无法访问。

(我没有足够的声望来评论toscho的答案。)

我没有屏幕阅读器的经验,我相信你的观点是有效的。

不过就使用键盘来操作select而言,使用键盘来select任何选项是微不足道的:

TAB控制

空格打开select列表

向上或向下箭头滚动到所需的列表项目

ENTERselect所需的项目

只有在ENTER上,onchange或(jQuery .change())事件才会被触发。

虽然我个人不会使用简单菜单的表单控件,但有许多Web应用程序使用表单控件来更改页面的表示(例如,sorting顺序)。这些可以通过AJAX实现,以将新内容加载到页面,或者,在较早的实现中,通过触发新的页面加载,这本质上是一个页面链接。

恕我直言,这些是表单控件的有效用途。

<select>标签创build一个下拉列表。 你不能把HTML链接放在下拉菜单中。

不过,JavaScript库提供了类似的function。 这里有一个例子: http : //www.dynamicdrive.com/dynamicindex1/dropmenuindex.htm

被接受的解决scheme看起来不错,但有一种情况是无法处理的:

当重新select相同的选项时,不会触发“onchange”事件。 所以我想出了以下改进:

HTML

 <select id="sampleSelect" > <option value="Home.php">Home</option> <option value="Contact.php">Contact</option> <option value="Sitemap.php">Sitemap</option> </select> 

jQuery的

 $("select").click(function() { var open = $(this).data("isopen"); if(open) { window.location.href = $(this).val() } //set isopen to opposite so next time when use clicked select box //it wont trigger this event $(this).data("isopen", !open); }); 
  <select name="career" id="career" onchange="location = this.value;"> <option value="resume" selected> All Applications </option> <option value="resume&j=14">Seo Expert</option> <option value="resume&j=21">Project Manager</option> <option value="resume&j=33">Php Developer</option> </select> 

试试这个代码

 <select name="forma" onchange="location = this.options[this.selectedIndex].value;"> <option value="Home.php">Home</option> <option value="Contact.php">Contact</option> <option value="Sitemap.php">Sitemap</option> </select>