The problem here is the amount of time between the completion of the blur event and the start of the focus event.
Wrapping focus in setTimeout allows you to complete the blur before setting focus on the element.
$('#price').blur(function(){ if($(this).val() !='Preço em USD' && isNaN($(this).val())) { alert("Enter Integer only ..."); setTimeout(function(){ $('#price').focus(); },100); } });
You can see a working copy of this here: http://jsfiddle.net/ttQRD/
UPDATE
As mentioned in the comments below, the problem here seems to be less related to time and more to the delegation of the focal event.
Placing the focal event inside setTimeout allows you to complete the current blur event and the focus event to fire in a separate loop.
source share