选择列表滚动到特定选项元素

时间:2011-07-11 15:49:59

标签: javascript jquery html

我有一个带有年份的选择框。第一个选项是空的。当我点击选择列表时,我希望滚动条自动向下滚动。我尝试过使用scrollTop,但它只适用于FireFox。

例如:

<select id="mySelect">
<option selected="selected" value=""></option>
<option value="1911">1911</option>
<option value="1912">1912</option>
<option value="1913">1913</option>
<option value="1914">1914</option>
<option value="1915">1915</option>
<option value="1916">1916</option>
<option value="1917">1917</option>
<option value="1918">1918</option>
<option value="1919">1919</option>
<option value="1920">1920</option>
<option value="1921">1921</option>
<option value="1922">1922</option>
...

</select>

5 个答案:

答案 0 :(得分:2)

实际上,选择点击/焦点有点复杂。这就是你想要的:

$('#mySelect').focus(function(){

    if($(this).data('focused') !==  true)
    {
        $(this).data('focused',true);  
        $(this).children(':last-child').prop('selected',true);
    }

});

$('#mySelect').blur(function(){
    $(this).data('focused',false); 
});

工作示例:http://jsfiddle.net/AlienWebguy/zuJrK/

答案 1 :(得分:0)

尝试以下代码,希望有所帮助

$("#mySelect").click(function(){
   $(this).find("option").eq(someMiddleNumber).focus().blur();
});

答案 2 :(得分:0)

您可以尝试删除样式&#34; overflow-y:auto;&#34;来自css,这将保持所选项目滚动到视图中(当您使用箭头键更改选择时)。

答案 3 :(得分:0)

对AlienWebguy的回答有所改进:

如果用户未通过添加以下settimeout部分进行任何更改,您可以确保默认值保持选中状态:

if($(this).data('focused') !==  true)
{
    $(this).data('focused',true);  
    $(this).children(':last-child').prop('selected',true);
    // dirty workaround
    window.setTimeout(function(){
        $(this).val("");
    }, 50);
}

答案 4 :(得分:-1)

ShankarSangoli很接近,但我认为你想要:

$("#mySelect").click(function(){
   $(this).find("option:last").attr("selected","selected");
});