我有一个网页,它包含一个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的代码是如何相同但这不起作用,我缺少什么?
答案 0 :(得分:5)
getElementById
是一个函数,而不是数组。
使用()
而非[]
。
此外,在JavaScript中,DOM元素使用focus
方法,而不是Focus
方法。
更正后的代码:
control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
答案 1 :(得分:4)
在第二个调用中,您使用的是方括号而不是括号。在第一次调用中,您正确使用了它。
此外,正如dontGoPlastic在下面的评论中指出的那样,您应该使用.focus()
(小写)代替.Focus()
。
因此,第二个if
块中的代码应该变为:
control2 = document.getElementById('<%= txtCode2.ClientID %>');
control2.focus();
答案 2 :(得分:1)
control2 = document.getElementById['<%= txtCode2.ClientID %>'];
应该是
control2 = document.getElementById('<%= txtCode2.ClientID %>');
^ paren ^ paren