<select>
<option accesskey="j">江苏</option>
<option accesskey="b">北京</option>
<option accesskey="s">上海</option>
</select>
<script language="javascript">
<!--
function selCN(e)
{
var e = window.event || e;
var t = e.srcElement || e.target;
var c = e.keyCode || e.charCode;
var index = ["j","b","s"];
sel = index.key( String.fromCharCode(c) );
t.selectedIndex = sel;
}
Array.prototype.key = function (v)
{
for(var i=0;i<this.length;i++)
{
if( this[i] == v )
return i;
}
return false;
}
document.getElementsByTagName("select")[0].onkeypress = selCN;
//-->
</script>

解决方案 »

  1.   

    非常感谢楼上!
    在此基础上修改了一下!
    <select>
    <option label="j">江苏</option>
    <option label="j">江西</option>
    <option label="b">北京</option>
    <option label="s">上海</option>
    <option label="s">陕西</option>
    </select>
    <script type="text/javascript">
    <!--
    function keySelect(e)
    {
    var e = window.event || e;
    var t = e.srcElement || e.target;
    var c = e.keyCode || e.charCode; var index = new Array();
    for(var i=0, j=0; i<this.options.length; i++)
    {
    if(this.options[i].label!='')
    {
    index[j++] = this.options[i].label;
    }
    } sel = index.key( String.fromCharCode(c), this.selectedIndex+1 );
    t.selectedIndex = sel;
    }
    Array.prototype.key = function (v, begin)
    {
    for(var i=begin; i<this.length; i++)
    {
    if( this[i] == v )
    return i;
    }
    for(var i=0; i<begin; i++)
    {
    if( this[i] == v )
    return i;
    }
    return false;
    }
    document.getElementsByTagName("select")[0].onkeypress = keySelect;
    //-->
    </script>
      

  2.   

    不好意思 上面错了 应该这样! 
    <select>
    <option label="jiangsu">江苏</option>
    <option label="jiangxi">江西</option>
    <option label="">----</option>
    <option label="beijing">北京</option>
    <option label="shanghai">上海</option>
    <option>----</option>
    <option label="shanxi">陕西</option>
    </select>
    <script type="text/javascript">
    <!--
    function keySelect(e)
    {
    var e = window.event || e;
    var t = e.srcElement || e.target;
    var c = e.keyCode || e.charCode; var index = new Array();
    for(var i=0; i<this.options.length; i++)
    {
    var current_opt = this.options[i];
    if(typeof(current_opt.label)!='undefined' && current_opt.label!='')
    {
    index[i] = current_opt.label.substr(0, 1);
    }
    } sel = index.key( String.fromCharCode(c), this.selectedIndex+1 );
    t.selectedIndex = sel;
    }
    Array.prototype.key = function (v, begin)
    {
    for(var i=begin; i<this.length; i++)
    {
    if( this[i] == v )
    return i;
    }
    for(var i=0; i<begin; i++)
    {
    if( this[i] == v )
    return i;
    }
    return false;
    }
    document.getElementsByTagName("select")[0].onkeypress = keySelect;
    //-->
    </script>
      

  3.   

    可是这样将又会产生一个问题!当按键选择的时候不能够触发onchange事件, 除非用onkeyup来代替, 如何能使在按键选择时触发onchange事件呢?
      

  4.   

    在下面的代码后加入
    t.selectedIndex = sel;
    --------------------------
    if( document.all )
    t.fireEvent( "onchange" );
    else
    {
    var evt = document.createEvent('HTMLEvents');
    evt.initEvent('change',true,true);
    t.dispatchEvent( evt );
    }
      

  5.   

    ice_berg16(寻梦的稻草人):  强! 美中不足的是不支持opera!