Javascript document.getElementById用于一个表单元素,但不用于另一个表单元素

Javascript document.getElementById用于一个表单元素,但不用于另一个表单元素,javascript,asp.net,Javascript,Asp.net,我有一个网页,它有一个10位数的代码,分为两个文本框,第一个文本框4个字符,第二个文本框6个字符 我一直在尝试实现一些javascript,这样当用户在第一个文本框中输入第四个字符时,光标就会跳到第二个文本框 页面布局如下: <asp:TextBox ID="txtCode1" onkeyup="Next()" runat="server" Width="45" MaxLength="4"/> <asp:TextBox ID="txtCode2" runat="serve

我有一个网页,它有一个10位数的代码,分为两个文本框,第一个文本框4个字符,第二个文本框6个字符

我一直在尝试实现一些javascript,这样当用户在第一个文本框中输入第四个字符时,光标就会跳到第二个文本框

页面布局如下:

<asp:TextBox ID="txtCode1" onkeyup="Next()" runat="server" Width="45"    MaxLength="4"/>
<asp:TextBox ID="txtCode2" runat="server" Width="70" MaxLength="6"/>

我正在使用以下Javascript:

function Next() 
{
    var control1 = document.getElementById('<%= txtCode1.ClientID %>');
    var control2;

    if (control1.value.length == 3) 
    {
         control2 = document.getElementById['<%= txtCode2.ClientID %>'];
         control2.Focus();
    }
}
函数Next()
{
var control1=document.getElementById(“”);
var控制2;
if(control1.value.length==3)
{
control2=document.getElementById[“”];
控件2.Focus();
}
}
我的问题是该函数无法识别第二个文本框。如果我一步一步地浏览Javascript,就可以找到
txtCode1
并获取长度,但是当长度达到4个字符时,它必须用
getElementById()
调用填充
control2
,它将control2设置为未定义,然后control2.Focus()调用抛出错误


我不明白获取control1和control2的代码是如何相同的,但这不起作用,我遗漏了什么?

在第二次调用中,您使用的是方括号而不是括号。在第一次通话中,您正确地使用了它

此外,正如Dontglastic在下面的评论中指出的,您应该使用
.focus()
(小写)而不是
.focus()

因此,第二个
if
块中的代码应该是:

control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
control2=document.getElementById(“”);
控件2.focus();

getElementById
是一个函数,而不是数组

使用
()
而不是
[]

另外,在JavaScript中,DOM元素有一个
focus
方法,而不是
focus
方法

更正代码:

control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
control2=document.getElementById(“”);
控件2.focus();

control2=document.getElementById['']

应该是

control2 = document.getElementById('<%= txtCode2.ClientID %>');
                                  ^ paren                    ^ paren
control2=document.getElementById(“”);
^帕伦^帕伦

他还想调用
focus()
,而不是
focus()
@T.J.Crowder。。。我在iPad上!:)嗯,我确实复制并粘贴了他的代码。让我慢了那么多@谢谢,我在答案中加了这个。@bfavareto Nice,再加上一个,兄弟!阿瑞尔格。真不敢相信我错过了!谢谢谢谢大家的帮助,真不敢相信我错过了。我敢打赌,如果有人发了这个问题,我一定会马上发现错误。