Follow the examples in the documentation:
Putting this code in a blur event callback is just as wrong as in a keyup event callback. Don't put it in an event callback at all!
Just inside of document.ready() :
$(function() { // equivalent to $(document).ready()
$('#reg_city').autocomplete(...);
});
You need to instantiate the autocomplete widget on the input ONCE.
The autocomplete widget itself will install whatever event listeners it needs.
EVERY jQuery UI widget works the same way. When the document is ready - or after you've dynamically inserted some element that is to be enhanced with a widget - you make a call to instantiate the widget. ONCE. If the widget needs to listen to some event(s) the widget will take care of setting that up.