By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,952 Members | 1,438 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,952 IT Pros & Developers. It's quick & easy.

How to control the tab key within onBlur

P: n/a
In my example the focus should only jump to textbox2 when you press the tab
key if '11' is in textbox1. If the value of textbox1 is not '11' than the
focus should be set back to textbox1. That works great in IE but in Mozilla
the cursor always jumps to textbox2 if you press the tab key even if the
value is not '11'.

<html>
<body>
<script type = 'text/javascript'>

function test(object) {
if (object.value == 11) {
return (true);
}
else {
return (false);
}
}

</script>
<form name = "my_form" action = "" method = "post" accept-charset =
"iso-8859-1">
<table id = "my_table" border = "1">
<tr>
<td>
<input type = "text" name = "my_textbox1" onBlur = 'if
(!test(document.my_form.my_textbox1))
{document.my_form.my_textbox1.focus();}'>
<input type = "text" name = "my_textbox2">
</td>
</tr>
</table>
</form>
</body>
</html>

What do I do wrong?
Stefan
Jan 26 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a

Stefan Mueller wrote:
In my example the focus should only jump to textbox2 when you press the tab
key if '11' is in textbox1. If the value of textbox1 is not '11' than the
focus should be set back to textbox1. That works great in IE but in Mozilla
the cursor always jumps to textbox2 if you press the tab key even if the
value is not '11'.

<html>
<body>
<script type = 'text/javascript'>

function test(object) {
if (object.value == 11) {
return (true);
}
else {
return (false);
}
}

</script>
<form name = "my_form" action = "" method = "post" accept-charset =
"iso-8859-1">
<table id = "my_table" border = "1">
<tr>
<td>
<input type = "text" name = "my_textbox1" onBlur = 'if
(!test(document.my_form.my_textbox1))
{document.my_form.my_textbox1.focus();}'>
<input type = "text" name = "my_textbox2">
</td>
</tr>
</table>
</form>
</body>
</html>

What do I do wrong?
Stefan

You do nothing wrong. Firefox has it all wrong.
It's a nasty bug that persists since the beginning.

Try this workaround:
change
document.my_form.my_textbox1.focus();
with
setTimeout("document.my_form.my_textbox1.focus();" ,1);

I think FF executes all the code on the onblur event and then sets the
focus on the new object, so it's something like:
select.onblur occures, it executes the function, sets the focus back to
the control and after that the onfocus of the newly focused object gets
triggered and it all happens in a singel process or something.
You simply delay the execution and it makes me wonder who has the bug,
IE or FF.
Anyway, it should work

Hope it helps.

Jan 27 '06 #2

P: n/a
> Try this workaround:
change
document.my_form.my_textbox1.focus();
with
setTimeout("document.my_form.my_textbox1.focus();" ,1);


Great, this works perfect.

Many thanks
Stefan
Jan 27 '06 #3

P: n/a
impaler wrote:
Stefan Mueller wrote:
In my example the focus should only jump to textbox2 when you press the
tab key if '11' is in textbox1. If the value of textbox1 is not '11' than
the focus should be set back to textbox1. That works great in IE but in
Mozilla the cursor always jumps to textbox2 if you press the tab key even
if the value is not '11'.
[...]
* function test(object) {
* * if (object.value == 11) {
Values of form controls are strings; this comparison works because of
implicit type conversion. Therefore, "11.000", "0x0B" and "0x0b" also
equal (`=='), but not strictly equal (`==='), 11. Unless this behavior
is wanted, it should be

if (object.value == "11") {
* * * return (true);
* * }
* * else {
* * * return (false);
* * }
* }
* * * <form name = "my_form" action = "" method = "post" accept-charset =
"iso-8859-1">
[...]
<input type = "text" name = "my_textbox1" onBlur = 'if
(!test(document.my_form.my_textbox1))
{document.my_form.my_textbox1.focus();}'>
<input type = "text" name = "my_textbox2">
[...]
</form>
[...]
What do I do wrong?
[...]

Please trim your quotes.
You do nothing wrong. Firefox has it all wrong.
It's a nasty bug that persists since the beginning.
It is not a bug. The `blur' event occurs when an element loses focus
(read: is about to lose focus), not when it has lost focus already.

<URL:http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents>
Try this workaround:
change
document.my_form.my_textbox1.focus();
with
setTimeout("document.my_form.my_textbox1.focus();" ,1);


Eeek. The solution to prevent keyboard navigation in this case is, of
course, to cancel the keyboard event if the key pressed was the tab key
and test() returned `false'.

<input ... onkeydown="return test(this) || (event.keyCode != 9);">

WFM in Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060110
Debian/1.5.dfsg-4 Firefox/1.5 Mnenhy/0.7.3.0.

However, this is not a Good Thing. Form data validity must not depend
entirely on DOM scripting, server-side testing is required. As for
form validation, it is better to do it before the form is submitted.
PointedEars
Jan 28 '06 #4

P: n/a
Many thanks for your additional information.

Stefan
Jan 28 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.