-1

我有一个包含 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();
    }
}

我的问题是该函数无法识别第二个文本框。如果我单步执行 Javascript 没有问题能够定位txtCode1并获取长度,但是当长度达到 4 个字符并且它必须填充control2调用getElementById()时,它将 control2 设置为未定义,然后 control2.Focus() 调用会引发错误。

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

4

3 回答 3

5

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

()不使用[]

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

更正的代码:

control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
于 2012-06-01T14:32:11.583 回答
4

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

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

所以,你的第二个if块内的代码应该变成这样:

control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
于 2012-06-01T14:32:04.017 回答
1

control2 = document.getElementById['<%= txtCode2.ClientID %>'];

应该

control2 = document.getElementById('<%= txtCode2.ClientID %>');
                                  ^ paren                    ^ paren
于 2012-06-01T14:32:28.500 回答