Vikas
Vikas

Reputation: 24332

Is it possible to focus the same textbox on it's onBlur() event?

I have HTML:

<input type="text" id="text1" onBlur="focusMe(this.id);" />

and javascript function:

function focusMe(Id)
{
document.getElementById(Id).focus();
}

Upvotes: 0

Views: 3070

Answers (3)

Jerome
Jerome

Reputation: 8447

It is possible:

function focusMe(Id) {
    setTimeout(function() {document.getElementById(Id).focus();}, 0);
}

Your script is not working because onBlur is called just before the focus is lost.

Two remarks:

  • you'd better use a reference to the input rather than its id
  • why do this?!

Upvotes: 7

nickf
nickf

Reputation: 546085

Well, running your code shows that it doesn't work, and probably with very good reason.

Since I'm here, I should point out that you can actually pass a reference to this rather than this.id and save some hassle:

onBlur="focusMe(this)"

function focusMe(el) {
    el.focus();
}

But it doesn't work anyway, so it's a tad moot.

Upvotes: 0

Oded
Oded

Reputation: 499062

I would just pass the control directly. Why pass the ID just to get the control back from it again?

Markup:

<input type="text" id="text1" onBlur="focusMe(this);" />

Javascript:

function focusMe(elem)
{
  elem.focus();
}

Upvotes: 0

Related Questions