在<option>标签</option>中使用href链接

时间:2010-01-04 16:44:51

标签: html forms tags anchor option

我有以下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>

9 个答案:

答案 0 :(得分:233)

<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月):在这个时代,如果你想要一个下拉菜单,有很多可以说是better ways to implement one.这个答案直接回答了直接的问题,但我并不主张这种方法适用于面向公众的网站。

答案 1 :(得分:15)

您不能在选项标签中使用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>

答案 2 :(得分:12)

使用真实的下拉菜单:列表(ulli)和链接。切勿将表单元素误用为链接。

带有屏幕阅读器的读者通常会浏览自动生成的链接列表 - 这些都会遗漏这些重要信息。许多键盘导航系统(例如JAWS,Opera)为链接和表单元素提供不同的键盘快捷键。

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

答案 3 :(得分:7)

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

&#34; onchange&#34;重新选择相同选项时,不会触发事件。所以,我提出了以下改进:

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);
});

答案 4 :(得分:5)

(我没有足够的声誉评论toscho的回答。)

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

然而,只要使用键盘来操作选择,使用键盘选择任何选项都是微不足道的:

TAB到控件

SPACE打开选择列表

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

按ENTER选择所需的项目

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

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

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

答案 5 :(得分:3)

<select>标记会创建一个下拉列表。你不能把html链接放在下拉列表中。

但是,有些JavaScript库提供了类似的功能。以下是一个示例:http://www.dynamicdrive.com/dynamicindex1/dropmenuindex.htm

答案 6 :(得分:2)

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

答案 7 :(得分:0)

我相信有人可以用 Jquery 做出比这更好的答案,其中下拉列表中的更改将导致一个新页面(适用于导航栏上的导航控制)。

<td><select name="forma" id='SelectOption'>
            <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></td><td>
document.getElementById('SelectOption').addEventListener('change', function() {
  val = $( "#SelectOption" ).val();
    
  console.log(val)
  if(val === 'Home') {
    window.open('home.php','_blank');
    }
  if(val === 'Contact') {
    window.open('contact.php', '_blank');
  }
  if (val === 'Sitemap') {
    window.open('sitemap.php', '_blank');
  }
});

答案 8 :(得分:-6)

试用此代码

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