I have HTML:
<input type="text" id="text1" onBlur="focusMe(this.id);" />
and javascript function:
function focusMe(Id)
{
document.getElementById(Id).focus();
}
I have HTML:
<input type="text" id="text1" onBlur="focusMe(this.id);" />
and javascript function:
function focusMe(Id)
{
document.getElementById(Id).focus();
}
Share
Improve this question
edited Jul 13, 2010 at 1:42
Ned Batchelder
377k77 gold badges581 silver badges673 bronze badges
asked Jan 5, 2010 at 13:24
VikasVikas
24.4k37 gold badges119 silver badges159 bronze badges
2
- @nickf - Did you see the title of the question? – Oded Commented Jan 5, 2010 at 13:28
- 1 Yeah I saw it, but there's code which has been written and we're being asked if it works? Just run it and find out, geez! – nickf Commented Jan 5, 2010 at 13:31
3 Answers
Reset to default 7It 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?!
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();
}
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.