Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

focus() doesn't take cursor into field

I'm trying to force the cursor to go back to its previous input when the value is wrong. Here is a simpler version of the script I use :

$('input:first-child').blur(function(e){
    console.log('here');
  $('input:first-child').focus();
});

It works when I click on another element to focusout but does not when I click on the body or another div element. Why? ​ I have a jsfiddle case : http://jsfiddle.net/leyou/Zabn4/37/

Edit: I was testing on Chrome/Win7, but with Firefox it seems worse. It's totally ignoring focus()

like image 918
leyou Avatar asked Nov 12 '12 15:11

leyou


1 Answers

This happens because the blur has not yet completed. Do it with a small timeout and it would work:

$('input:first-child').blur(function(e){
    setTimeout(function () { $('input:first-child').focus(); }, 20);
});
like image 126
Konstantin Dinev Avatar answered Oct 05 '22 20:10

Konstantin Dinev