Autocomplete with Ajax and Autofocus should select even after a blur

Autocomplete with Ajax and Autofocus should select even after a blur

I know this is probably by design, but if you have an autocomplete with autofocus set, and the user tabs out or blurs before the list appears and an item is selected, the list never appears and no item is selected. I realize that this may be good from a theoretical programming browser perspective, but from a usability perspective, this is bad.

Once a user gets comfortable using a form, the user will want to move faster. He will know and expect that when he types in "Rio" for example in a city field, "Rio de Janero" will get selected because its the first item in the list. He will want to type "Rio" and quickly move on. If there is a delay in having "Rio de Janero"  appear in the field after moving on, its not a big deal to the user, because he knows what to expect. The LAST thing the user wants is to have to WAIT.

This shows particularly badly when using Ajax, as there can be quite a delay. I realize that the ajax call is asynchronous, and might never return, but in the end, that is not a big deal, as it would happen rarely. Most of the time, the data will return within a second, and the user will want to see a selection appear in the field, even after tabbing out. I also realize that what I am asking could be quite difficult, as it requires changing the field in the background without losing the current focus. If we are worried that the user may have already changed the field, and then sees the field change again automatically because this is a really late returning async call, then perhaps a programmer selectable timeout could be specified that would prevent the field from changing after a certain amount of time since the ajax call was initiated.


To illustrate:

Perhaps the expectation is that programmers should modify Autocomplete to do this? I think rather this should be the default behavior, and they should have to modify it the other way. Its easier to stop it, then make it happen, and it makes the ajax option pretty much unusable in the real world.