I did more testing and in the case of a keyup, it is not so much that the inputField is blanked out, but it only reports the last characer typed in. For instance, if I type quickly abc, when it re-renders, it will only display a. And the focus is not in the inputText field anymore. If I change the execute and render properties from @this to @all, the behavior is more in line with what I would expect. The focus stays in the inputText field and most characters are echoed in real-time, unless I type too quick, in which case the feedback is delayed. I think there is a problem with the response time. Maybe someone can give me advice on startegies to fix this issue.
And in order to avoid re-rendering of your inputs (which actually causes your problem) - change the render ="tableId" to render="tableId@body". Then header will not be updated.
It works! Thanks! Martin