可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have the following HTML code:
<select name=\"forma\">
<option value=\"Home\">Home</option>
<option value=\"Contact\">Contact</option>
<option value=\"Sitemap\">Sitemap</option>
</select>
How can I make Home, Contact and Sitemap values as links?
I used the following code and as I expected it didn\'t work:
<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>
回答1:
<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>
UPDATE (Nov 2015): In this day and age if you want to have a drop menu there are plenty of arguably better ways to implement one. This answer is a direct answer to a direct question, but I don\'t advocate this method for public facing web sites.
回答2:
You cant use href tags withing option tags. You will need javascript to do so.
<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>
回答3:
Use a real dropdown menu instead: a list (ul
, li
) and links. Never misuse form elements as links.
Readers with screen readers usually scan through a automagically generated list of links – the’ll miss these important information. Many keyboard navigation systems (e.g. JAWS, Opera) offer different keyboard shortcuts for links and form elements.
If you still cannot drop the idea of a select
don’t use the onchange
handler at least. This is a real pain for keyboard users, it makes your third item nearly inaccessible.
回答4:
The accepted solution looks good, but there is one case it cannot handle:
The \"onchange\" event will not be triggered when the same option is reselected. So, I came up with the following improvement:
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);
});
回答5:
(I don\'t have enough reputation to comment on toscho\'s answer.)
I have no experience with screen readers and I\'m sure your points are valid.
However as far as using a keyboard to manipulate selects, it is trivial to select any option by using the keyboard:
TAB to the control
SPACE to open the select list
UP or DOWN arrows to scroll to the desired list item
ENTER to select the desired item
Only on ENTER does the onchange or (JQuery .change()) event fire.
While I personally would not use a form control for simple menus, there are many web applications that use form controls to change the presentation of the page (eg., sort order.) These can be implemented either by AJAX to load new content into the page, or, in older implementations, by triggering new page loads, which is essentially a page link.
IMHO these are valid uses of a form control.
回答6:
The <select>
tag creates a dropdown list. You can\'t put html links inside a dropdown.
However, there are JavaScript libraries that provide similar functionality. Here is one example: http://www.dynamicdrive.com/dynamicindex1/dropmenuindex.htm
回答7:
<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>
回答8:
Try this Code
<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>