I found how to fix it. In the file / bootstrap -table / extensions / filter / bootstrap-table-filter.min.js there is this code (unpacked):
! function(a) { "use strict"; a.extend(a.fn.bootstrapTable.defaults, { showFilter: !1 }); var b = a.fn.bootstrapTable.Constructor, c = b.prototype.init, d = b.prototype.initSearch; b.prototype.init = function() { c.apply(this, Array.prototype.slice.apply(arguments)); var b = this; this.$el.on("load-success.bs.table", function() { b.options.showFilter && a(b.options.toolbar).bootstrapTableFilter({ connectTo: b.$el }) }) }, b.prototype.initSearch = function() { d.apply(this, Array.prototype.slice.apply(arguments)), "server" !== this.options.sidePagination && "function" == typeof this.searchCallback && (this.data = a.grep(this.options.data, this.searchCallback)) }, b.prototype.getData = function() { return this.searchText || this.searchCallback ? this.data : this.options.data }, b.prototype.getColumns = function() { return this.options.columns }, b.prototype.registerSearchCallback = function(a) { this.searchCallback = a }, b.prototype.updateSearch = function() { this.options.pageNumber = 1, this.initSearch(), this.updatePagination() }, b.prototype.getServerUrl = function() { return "server" === this.options.sidePagination ? this.options.url : !1 }, a.fn.bootstrapTable.methods.push("getColumns", "registerSearchCallback", "updateSearch", "getServerUrl") }(jQuery);
I changed it to this (renamed the specific initSearch function to initSearch1):
! function(a) { "use strict"; a.extend(a.fn.bootstrapTable.defaults, { showFilter: !1 }); var b = a.fn.bootstrapTable.Constructor, c = b.prototype.init, d = b.prototype.initSearch; b.prototype.init = function() { c.apply(this, Array.prototype.slice.apply(arguments)); var b = this; this.$el.on("load-success.bs.table", function() { b.options.showFilter && a(b.options.toolbar).bootstrapTableFilter({ connectTo: b.$el }) }) }, b.prototype.initSearch1 = function() { d.apply(this, Array.prototype.slice.apply(arguments)), "server" !== this.options.sidePagination && "function" == typeof this.searchCallback && (this.data = a.grep(this.options.data, this.searchCallback)) }, b.prototype.getData = function() { return this.searchText || this.searchCallback ? this.data : this.options.data }, b.prototype.getColumns = function() { return this.options.columns }, b.prototype.registerSearchCallback = function(a) { this.searchCallback = a }, b.prototype.updateSearch = function() { this.options.pageNumber = 1, this.initSearch1(), this.updatePagination() }, b.prototype.getServerUrl = function() { return "server" === this.options.sidePagination ? this.options.url : !1 }, a.fn.bootstrapTable.methods.push("getColumns", "registerSearchCallback", "updateSearch", "getServerUrl") }(jQuery);
And now both the filter and the search work. But it still has an error if you use search and then filter or vice versa.