मैंने <select>
कस्टम डेटा- विशेषताओं के आधार पर कॉम्बोबॉक्स ( ) को फ़िल्टर करने वाले फ़ंक्शन का उपयोग करके एक समाधान लागू किया । यह समाधान समर्थन करता है:
- एक
<option>
दिखाने के लिए जब फिल्टर का चयन खाली छोड़ देंगे।
- मौजूदा चयनित विशेषताओं का सम्मान करता है।
<option>
डेटा फ़िल्टर विशेषता के बिना तत्वों को अछूता छोड़ दिया जाता है।
JQuery 2.1.4 और फ़ायरफ़ॉक्स, क्रोम, सफारी और 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>
मूल तत्व डेटा () फ़ंक्शन द्वारा संग्रहीत किए जाते हैं, इसलिए बाद के कॉल सही तत्वों को जोड़ेंगे और हटाएंगे।