Thanks tviman for comments. I didn't try my code yesterday.
(Also I'd appreciate any details rather that just telling "it doesn't work"
Here's what we got: when you pass an object name in function argument, it's considered to be a string, but not an object anymore - and you get a message that focus() method is not applicable to it.
The change is very simple:
function moveFocus(current)
{
if (current.value.length >= 1) //fix here - you could type 3 chars before
document.form1.two.focus(); //fix here - next field name is hardcoded
}
<input type="text" name="two" onKeyDown="moveFocus(this)">
Not so beautiful as before - you need a new function for every form field that automatic focus switch needed, because "next" field name is hard-coded into the function body.
I like the first idea more (just one function for all cases), but this seems to be the most simple solution of the problem.
Of course, in other case if there are many fields that need this action, I'd recommend to think about other solution.