You can use jQuery.extend
for this; since you want to use this for a Kendo Grid, maybe you could do something like this (example only works for filters without nesting):
kendo.ui.Grid.fn.addOrUpdateFilter = function (filter) {
var filterConfig = this.dataSource.filter(),
filters,
isNewFilter = true;
if (filterConfig) {
filters = filterConfig.filters;
for (var i = 0; i < filters.length; i++) {
if (filters[i].field === filter.field) {
// there already was a filter for this field, so update it
$.extend(filters[i], filter);
isNewFilter = false;
}
}
} else {
filters = [];
}
// there was no filter for this field, so add it
if (isNewFilter) {
filters.push(filter);
}
this.dataSource.filter(filters);
}
so you could do this in your handler:
$('#gridSearch').keyup(function() {
var grid = $('.k-grid').first().data("kendoGrid");
grid.addOrUpdateFilter({
field: 'gridSearch',
operator: 'contains',
value: $(this).val()
});
})