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