我有一个带有年份的选择框。第一个选项是空的。当我点击选择列表时,我希望滚动条自动向下滚动。我尝试过使用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>
答案 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);
});
答案 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");
});