答案 0 :(得分:1)
我不相信这种行为是specified,因此请由浏览器创建者决定如何实施。
Chrome的默认行为似乎就是您所描述的:
鉴于重复按键( 1 , 1 ),浏览器将循环通过以该特定字符开头的选项。
当按键不重复( 1 , 2 )时,浏览器将选择启动的选项使用输入的序列。
即使重复按键,Internet Explorer似乎也支持第二种行为,但在将第一个非匹配元素添加到序列后( 1 , 1 当最后一场比赛为11
时,kbd>, 1 。
<select>
<option>1</option>
<option>15</option>
<option>14</option>
<option>13</option>
<option>12</option>
<option>11</option>
<option>2</option>
<option>20</option>
<option>21</option>
<option>22</option>
</select>
&#13;
答案 1 :(得分:0)
看起来这种行为取决于浏览器以及它们如何实现它(MS很可能希望匹配操作系统行为)。
如果你想要这个确切的行为,无论你的应用程序需要它(不推荐,因为用户可能期望他们已经习惯了某种行为),你可以尝试实现一些这样的JS / jQuery:
var keyIdleTimer = null;
var consecKeys = '';
$('select').keypress(function(e){
e.preventDefault();
var key = String.fromCharCode(e.which); //get letter of key
//check if there's a previous letter pressed
if (keyIdleTimer) {
clearTimeout(keyIdleTimer);
}
consecKeys += key;
$(this).val(consecKeys); //select the value
keyIdleTimer = setTimeout(function(){
keyIdleTimer = null;
consecKeys = '';
}, 500); //time required for a user to hit a second letter
});
在这里小提琴:https://jsfiddle.net/844umqz8/
我刚刚在Chrome中对其进行了测试,并且没有完全使用实际的下拉弹出窗口,但是当该字段处于焦点(没有弹出窗口)时可以正常工作,可能适用于IE。