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

Gra*_*ush -1 javascript asp.net

我有一个网页,它采用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"/>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下Javascript:

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

    if (control1.value.length == 3) 
    {
         control2 = document.getElementById['<%= txtCode2.ClientID %>'];
         control2.Focus();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是该函数无法识别第二个文本框.如果我通过JavaScript的步骤没有问题是能够找到txtCode1并获得了长度,但当长度命中4个字符,它有填充control2getElementById()它设置控制2为未定义,然后control2.Focus()调用抛出一个错误的呼叫.

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

Que*_*tin 5

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

使用()[].

此外,在JavaScript中,DOM元素有focus方法,而不是Focus方法.

更正代码:

control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
Run Code Online (Sandbox Code Playgroud)