Interesting question. With other widgets...
BUTTONEDIT you can code inside BEFORE FIELD to execute the action in certain conditions i.e. field is blank, to save the user having to tap the action
COMBOBOX, drop-down list appears if you click in field, it does not appear if you tab into field.
If you were replacing BUTTONEDIT with INPUT+COMPLETER, you would probably expect to maintain that functionality.
The ON CHANGE block is only executed if there is no keyboard entry for a few hundred milliseconds. BEFORE FIELD would have to have the same, so that if the user tab-tab through the field quickly, the block was not fired. Only if the user paused in the field would you want it fired.
I don't think you should have to repeat the ON CHANGE logic in BEFORE FIELD. If this were to occur, I think an additional attribute that would lead to ON CHANGE being field on field entry would lead to cleaner code.
With COMPLETER expectation is that list will have a narrower selection, the more keys you type. Type, G, get the top 20 entries that begin G, type GE, get the top 20 entries that begin GE. So what criteria would you use when the field is empty? I guess you would use top 20 most popular values, or the 20 most recent values.
Does this pattern occur in any other well-known applications? Answer=Yes. Goto google, click into the search field, and it pops up with your most recent searches.
Reuben