When you filter, by default KendoUI is trying to match the entire phrase that you type. So if you put in "Verizon" it will match anything that contains "Verizon". If you put in "LTE" it will match anything that contains "LTE". However, when you put in "Verizon LTE" it will match anything containing "Verizon LTE", whereas it seems like you want it to match "Verizon", "LTE", and "Verizon LTE" (which will happen anyway when it matches on the first two.
In order for this type of filtering to happen, you will need to pre-process val
in your filtering function in order to create an array of search terms, using space as the token splitter, and then perform your filter on each member of the array and return the aggregate result.
So, in order to split your search term up by spaces:
var val = $("#search").val().split(" ");
This will make val an array rather than a literal value, so you'll need to generate your filter array based on each value in this array. There are a number of ways you could do it, but here's one approach:
filters: getFieldFilter("ServiceProviderName", "contains", val)
.concat(getFieldFilter("ManufacturerName", "contains", val))
.concat(...);
...where getFieldFilter might look like this:
function getFieldFilter(field, operator, values) {
var ret = [];
for(var i = 0; i < values.length; i++) {
ret.push(
{
field: field,
operator: operator,
value: values[i]
});
}
return ret;
}