it's because listener: 'change' binds the listener to change event. In IE change event doesn't fire on pressing enter.
1) One way to resolve this to use custom keydown listener:
listener: {'keydown': function(evt, ui){
if(evt.keyCode == $.ui.keyCode.ENTER || evt.keyCode == $.ui.keyCode.TAB){
this.filter({
rule: {condition: ui.column.filter.condition, dataIndx: ui.dataIndx, value: ui.value, value2: ui.value2 }
});
}
}}
2) Other easier way is to omit listener property at all which would use default timeout listener.
Note: the above solutions are for v4.