使用<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>
使用一个真正的下拉菜单,而不是:列表( ul
, li
)和链接。 切勿误用表单元素作为链接。
屏幕阅读器的读者通常会扫描一个自动生成的链接列表 – 这些链接会错过这些重要的信息。 许多键盘导航系统(例如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>