-1

最初のテキスト ボックスに 4 文字、2 番目のテキスト ボックスに 6 文字の 2 つのテキスト ボックスに分割された 10 桁のコードを受け取る Web ページがあります。

ユーザーが最初のテキストボックスに4番目の文字を入力すると、カーソルが2番目のテキストボックスにジャンプするように、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();
    }
}

私の問題は、関数が 2 番目のテキスト ボックスを認識しないことです。Javascript をステップ実行しても問題はありませんが、長さを見つけtxtCode1て取得することはできますが、長さが 4 文字に達しcontrol2getElementById()呼び出しで入力する必要がある場合、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

2 番目の呼び出しでは、括弧の代わりに角括弧を使用しています。最初の呼び出しでは、正しく使用しました。

また、以下のコメントで dontGoPlastic が指摘しているように、 の.focus()代わりに (小文字)を使用する必要があり.Focus()ます。

したがって、2 番目の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 に答える