<select>
사용자 지정 데이터 속성을 기반으로 콤보 상자 ( ) 를 필터링하는 함수를 사용하여 솔루션을 구현했습니다 . 이 솔루션은 다음을 지원합니다.
<option>
필터가 선택 항목을 비워 두는시기를 표시 하는 데 있습니다.
- 기존에 선택한 속성을 존중합니다.
<option>
data-filter 속성이없는 요소는 그대로 유지됩니다.
jQuery 2.1.4 및 Firefox, Chrome, Safari 및 IE 10 이상에서 테스트되었습니다.
다음은 HTML의 예입니다.
<select id="myCombobox">
<option data-filter="1" value="AAA">Option 1</option>
<option data-filter="1" value="BBB">Option 2</option>
<option data-filter="2" value="CCC">Option 3</option>
<option data-filter="2" value="DDD">Option 4</option>
<option data-filter="3" value="EEE">Option 5</option>
<option data-filter="3" value="FFF">Option 6</option>
<option data-filter-emptyvalue disabled>No Options</option>
</select>
필터링을위한 jQuery 코드 :
function filterCombobox(selectObject, filterValue, autoSelect) {
var fullData = selectObject.data("filterdata-values");
var emptyValue = selectObject.data("filterdata-emptyvalue");
// Initialize if first time.
if (!fullData) {
fullData = selectObject.find("option[data-filter]").detach();
selectObject.data("filterdata-values", fullData);
emptyValue = selectObject.find("option[data-filter-emptyvalue]").detach();
selectObject.data("filterdata-emptyvalue", emptyValue);
selectObject.addClass("filtered");
}
else {
// Remove elements from DOM
selectObject.find("option[data-filter]").remove();
selectObject.find("option[data-filter-emptyvalue]").remove();
}
// Get filtered elements.
var toEnable = fullData.filter("option[data-filter][data-filter='" + filterValue + "']");
// Attach elements to DOM
selectObject.append(toEnable);
// If toEnable is empty, show empty option.
if (toEnable.length == 0) {
selectObject.append(emptyValue);
}
// Select First Occurrence
if (autoSelect) {
var obj = selectObject.find("option[selected]");
selectObject.val(obj.length == 0 ? toEnable.val() : obj.val());
}
}
이를 사용하려면 유지하려는 값으로 함수를 호출하기 만하면됩니다.
filterCombobox($("#myCombobox"), 2, true);
그러면 결과 선택은 다음과 같습니다.
<select id="myCombobox">
<option data-filter="2" value="CCC">Option 3</option>
<option data-filter="2" value="DDD">Option 4</option>
</select>
원래 요소는 data () 함수에 의해 저장되므로 후속 호출은 올바른 요소를 추가하고 제거합니다.