Datalist - 限制只显示 x 数量的选项
Datalist - limit to dispay only x-amount of options
所以我有这个 html 数据列表,其中包含将近 6000 个选项,类似于下面的示例。
问题是它会在你的浏览器上打开很多选项,我一次只需要大约 10 个可见,而且它需要是一个在你开始输入时自动完成的字段
有没有办法只显示列表中 returns 的前 10 个选项?
for (i = 0; i < 6000; i++) {
$('#myList').append("<option value=Example'"+i+"'></option>");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input list="myList">
<datalist id="myList">
</datalist>
我发现 this post 是 3 年前的,但它太慢了,无法使用我的选项数量。希望有人找到更好(更快)的解决方案,或者至少找到替代解决方案。
我在堆栈溢出中发现了另一个问题,它可以通过将控件类型从输入更改为 select 来帮助您处理您的情况:
原来你在其中一个答案中找到解决方案:
create dropdown list with scrollbar
for (i = 0; i < 6000; i++) {
$('#sel').append("<option value=Example'"+i+"'>Example'"+i+"'</option>");
}
document.getElementById('sel').addEventListener('click', onClickHandler);
document.getElementById('sel').addEventListener('mousedown', onMouseDownHandler);
function onMouseDownHandler(e){
var el = e.currentTarget;
if(el.hasAttribute('size') && el.getAttribute('size') == '1'){
e.preventDefault();
}
}
function onClickHandler(e) {
var el = e.currentTarget;
if (el.getAttribute('size') == '1') {
el.className += " selectOpen";
el.setAttribute('size', '6');
}
else {
el.className = '';
el.setAttribute('size', '1');
}
}
select {
position: absolute;
z-index: 0;
width: 200px;
}
.selectOpen {
z-index:9;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="sel" size = "1">
</select>
我设法找到了 chosen 插件的解决方法。效果很好,可以在 bower 和 npm 上使用,方便访问。
所以我有这个 html 数据列表,其中包含将近 6000 个选项,类似于下面的示例。
问题是它会在你的浏览器上打开很多选项,我一次只需要大约 10 个可见,而且它需要是一个在你开始输入时自动完成的字段
有没有办法只显示列表中 returns 的前 10 个选项?
for (i = 0; i < 6000; i++) {
$('#myList').append("<option value=Example'"+i+"'></option>");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input list="myList">
<datalist id="myList">
</datalist>
我发现 this post 是 3 年前的,但它太慢了,无法使用我的选项数量。希望有人找到更好(更快)的解决方案,或者至少找到替代解决方案。
我在堆栈溢出中发现了另一个问题,它可以通过将控件类型从输入更改为 select 来帮助您处理您的情况:
原来你在其中一个答案中找到解决方案: create dropdown list with scrollbar
for (i = 0; i < 6000; i++) {
$('#sel').append("<option value=Example'"+i+"'>Example'"+i+"'</option>");
}
document.getElementById('sel').addEventListener('click', onClickHandler);
document.getElementById('sel').addEventListener('mousedown', onMouseDownHandler);
function onMouseDownHandler(e){
var el = e.currentTarget;
if(el.hasAttribute('size') && el.getAttribute('size') == '1'){
e.preventDefault();
}
}
function onClickHandler(e) {
var el = e.currentTarget;
if (el.getAttribute('size') == '1') {
el.className += " selectOpen";
el.setAttribute('size', '6');
}
else {
el.className = '';
el.setAttribute('size', '1');
}
}
select {
position: absolute;
z-index: 0;
width: 200px;
}
.selectOpen {
z-index:9;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="sel" size = "1">
</select>
我设法找到了 chosen 插件的解决方法。效果很好,可以在 bower 和 npm 上使用,方便访问。