have update to object oriented.
We just have to create object for each filter, and alter the function FilterItemsByText
//http://www.aspsnippets.com/Articles/Filter-and-Search-ASP.Net-DropDownList-items-using-JavaScript.aspx
//https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
function CacheItems(ddl, lblMessage) {
this.ddlText = new Array();
this.ddlValue = new Array();
this.ddlTempItems = ddl;
this.lblMesg = lblMessage;
this.hasDefault = false;
this.DefaultOption = new Option("", "");
if (typeof this.ddlTempItems === 'undefined' || typeof this.ddlTempItems.options === 'undefined' || this.ddlTempItems.options.length == 0)
return;
//http://jsperf.com/jquery-each-push-vs-filter-map/2
for (var i = 0; i < this.ddlTempItems.options.length; i++) {
this.ddlText[this.ddlText.length] = this.ddlTempItems.options[i].text;
this.ddlValue[this.ddlValue.length] = this.ddlTempItems.options[i].value;
}
}
CacheItems.prototype.AddItems = function (text, value, index) {
var options = new Option(text, value);
if (typeof this.ddlTempItems === 'undefined'
|| typeof this.ddlTempItems.options === 'undefined'
)
return;
if (this.hasDefault && this.DefaultOption.value != "" && !this.HasOption(this.DefaultOption.value)) {
this.ddlTempItems.options.add(this.DefaultOption);
}
if (index === -1) {
this.ddlTempItems.options.add(options);
return;
}
if (index === 0 && this.ddlTempItems.options[0].text.toLowerCase() != text.toLowerCase()) {
this.ddlTempItems.options.add(options, this.ddlTempItems[0]);
}
}
CacheItems.prototype.RemoveItems = function (text, value) {
var options = new Option(text, value);
if (typeof this.ddlTempItems === 'undefined'
|| typeof this.ddlTempItems.options === 'undefined'
)
return;
if (this.ddlTempItems.options[0].text.toLowerCase() == text.toLowerCase())
this.ddlTempItems[0] = null;
}
CacheItems.prototype.HasOption = function (value) {
for (var i = 0, len = this.ddlTempItems.options.length; i != len; ++i) {
if (this.ddlTempItems.options[i].value == value) {
return true;
}
}
return false;
}
function FilterItems(value, objCacheItem) {
AddProtoTypes();
objCacheItem.ddlTempItems.options.length = 0;//Clear the dropdown
for (var i = 0; i < objCacheItem.ddlText.length; i++) {
//if (objCacheItem.ddlText[i].toLowerCase().indexOf(value) != -1) {//Contains
if (objCacheItem.ddlText[i].toLowerCase().StartsWith(value, 0)) {//Contains
objCacheItem.AddItems(objCacheItem.ddlText[i], objCacheItem.ddlValue[i], -1);
}
}
//when no element found
if (objCacheItem.ddlTempItems.options.length == 0 && objCacheItem.hasDefault) {
objCacheItem.ddlTempItems.options.add(objCacheItem.DefaultOption);
}
objCacheItem.lblMesg.innerHTML = value == "" ? "" :
objCacheItem.ddlTempItems.options.length + (objCacheItem.hasDefault ? -1 : 0) + " items found.";
objCacheItem.ddlTempItems[0].selected = true;
}
function AddProtoTypes() {
if (!String.prototype.StartsWith) {
String.prototype.StartsWith = function (searchString, position) {
position = position || 0;
return this.indexOf(searchString, position) === position;
};
}
}
2 comments:
I simply want to tell you that I’m all new to blogs and truly liked you’re blog site. Very likely I’m likely to bookmark your site . You surely come with remarkable articles. Cheers for sharing your website page.
Hadoop Training in Chennai
thanks for giving that type of information. ielts coaching in gurgaon
Post a Comment