AP2*_*257 4 html jquery html-select
我有一个HTML select元素:
<select id='poetslist'>
<option value="shakespeare">William Shakespeare</option>
<option value="milton">John Milton</option>
<option value="keats">John Keats</option>
<option value="wordsworth">William Wordsworth</option>
<option value="larkin">Phillip Larkin</option>
</select>
Run Code Online (Sandbox Code Playgroud)
在Chrome中,当页面加载时,William Shakespeare会选择该选项.如果用户开始输入"Phil",则列表会集中精力Phillip Larkin.熟悉的行为.
我想做的事情(最好使用jQuery)也允许用户输入诗人的首字母并让相关选项成为焦点.
因此,如果您键入JK,则该John Keats选项应该成为焦点.JM和约翰米尔顿等
我甚至不知道HTML select元素是如何工作的,不管它在不同的浏览器中是否有所不同等等 - 而且似乎很难为此找到好的文档.
谁能想出一个聪明的方法来在jQuery中做到这一点?
这是一个完整的解决方案:
.data().HTML
<select id="poetslist">
<option value="shakespeare" data-initial="WS">William Shakespeare</option>
<option value="milton" data-initial="JM">John Milton</option>
<option value="keats" data-initial="JK">John Keats</option>
<option value="wordsworth" data-initial="WW">William Wordsworth</option>
<option value="larkin" data-initial="PL">Phillip Larkin</option>
</select>
Run Code Online (Sandbox Code Playgroud)
使用Javascript
var timer = null, initials = "";
$("#poetslist").keypress(function (e) {
initials += String.fromCharCode(e.which).toUpperCase();
// Look for option with initials beginning with the typed chars
$(this).find("option").filter(function () {
return $(this).data("initial").toUpperCase().indexOf(initials) === 0;
}).first().attr("selected", true);
// Set/reset timer
if (timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(function () {
timer = null;
initials = "";
}, 2000); // Max 2 second pause allowed between key presses
return false;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6791 次 |
| 最近记录: |