我有一个选择f.e. 10个选项('one','two','three',......)。加载页面时,第一个选项“一”被选中。
在一个函数中,我设置为第五个选项
$("myselect").val('five');
实际上现在五分之一选项显示在选择中,值也设置正确。
但现在我在我的表单中选中,直到我达到此选择。如果我现在使用键盘向下键,则选择跳转到选项'two'而不是'six'。
如何设置一个适合以后键盘使用的选定选项?
答案 0 :(得分:5)
尝试设置selectedIndex
属性。见下文,
$('#myselect').val("5").prop('selectedIndex', 4);
DEMO: http://jsfiddle.net/kLZ7z/
另一种更清洁的方法是
var nValue = "5";
$('option', '#myselect').filter(function () {
return this.value == nValue;
}).prop('selected', true);
答案 1 :(得分:1)
这是一个Firefox错误。我找到的一个解决方案是在选项上使用.prop('selected', true)
,而不是在选择中使用.val
。
$('#myselect').children('option[value="five"]').prop('selected', true);
DEMO:http://jsfiddle.net/JM2dZ/1/
注意:您不需要首先取消selected
其他选项,这样做实际上会导致问题继续发生。
答案 2 :(得分:0)
猜一点,但试试这个:
$('#myselect option').each(function(){
$(this).removeAttr('selected'));
});
$('#myselect option').eq(4).attr('selected', 'selected');
这是一些未经测试的伪代码,只是为了让您了解要尝试的内容。