개념 증명 - 대규모 선택을 동적으로 필터링
7621 단어 javascript
첫째, 나는 datalist 루트를 내려가지 않았다. 유사한 동작을 제공하지만 문자열 값만 선택할 수 있습니다. 선택 필드를 사용하면 옵션의 값에 바인딩하는 동안 문자열 값을 표시할 수 있습니다. 예를 들어 사용자에게 표시되는 텍스트는 American이고 값은 데이터베이스에서 사용되는 일부 기본 키 값일 수 있습니다.
데이터 목록을 사용하는 대신 드롭다운 옆에 간단한 텍스트 필드를 사용했습니다.
<input type="search" id="filter" placeholder="Filter" autocomplete="off">
<select id="myOptions"></select>
내 JavaScript 코드는 필터에 대한 변경 사항을 수신하고 드롭다운을 채운 데이터의 필터에 적용했습니다. 다음은 전체 코드입니다.
function getOptions() {
let result = [];
let prefix = ["A","B","C","D","E","F","G","H","I","J","K"];
prefix.forEach(p => {
for(let x=0; x<250; x++) {
result.push(p+x);
}
});
return result;
}
function setOptions(opts) {
let select = document.querySelector('#myOptions');
//set values for drop down
let html = '';
opts.forEach(o => {
html += `<option>${o}</option>`;
});
select.innerHTML = html;
}
let filter = document.querySelector('#filter');
filter.addEventListener('input', () => {
let value = filter.value.trim().toLowerCase();
let options = (getOptions()).filter(f => {
return value === '' || f.toLowerCase().includes(value);
});
setOptions(options);
},false);
setOptions(getOptions());
따라서 먼저
getOptions
는 API 호출 또는 다른 '실제' 프로세스를 나타냅니다. 제 경우에는 더미 데이터를 생성하고 있습니다.함수
setOptions
는 드롭다운에 사용할 수 있는 옵션 설정을 처리합니다. 전달된 값의 배열을 기대합니다. 기본적으로 이것은 getOptions
의 전체 결과이지만 필터에 입력하면 반환된 값이 필터링됩니다. 다음은 데모입니다.나는 이것을 트위터에 공유했고 좋은 반응을 얻었습니다. Markus Oberlehner는 CodePen 포크로 응답하여 흥미로운 작업을 수행했습니다. 필터 필드를 클릭하면 드롭다운의
multiple
속성이 활성화되어 수행 중인 필터에 대한 좀 더 시각적인 피드백을 제공합니다. 여기 그의 버전이 있습니다.내 CodePen(또는 Markus)을 포크하여 자신의 버전에서 작업할 수 있음을 기억하십시오!
Reference
이 문제에 관하여(개념 증명 - 대규모 선택을 동적으로 필터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/raymondcamden/proof-of-concept-dynamically-filtering-a-large-select-2kaj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)