0

TextBox から値を読み取り、ボタンのクリック時に別の TextBox に割り当てる方法を知りたいです。この TextBox は AJAX CalendarExtender にアタッチされています。これまでのところ、私はこれを持っています。Javascript の ShowDate() 関数でこれが必要です。

  <asp:TextBox ID="txtStartDate" runat="server"  ReadOnly="false" Height="28px"    Width="283px"></asp:TextBox>
    <asp:CalendarExtender  ID="ClendarExtender" BehaviorID="CE1"   TargetControlID="txtStartDate" runat="server">
    </asp:CalendarExtender>

    <br />
    <asp:TextBox ID="txtShowMessage" runat="server" Height="76px" 
        style="margin-left: 336px" Width="306px"></asp:TextBox>
    <br />
    <br />
    <asp:Button ID="btnCreateNote" runat="server"  OnClientClick="showDate()"  style="margin-left: 456px" 
        Text="Button" onclick="btnCreateNote_Click" />
    <br />

それから私のjsは

 function showDate() {
 var txtDate = document.getElementById('<%=txtStartDate.ClientID  %>');
 document.getElementById("txtShowMessage").value = txtDate;
 }

何が悪いのかわからず、textDate に値がありません。

4

2 に答える 2

0

これは、書き込み時runat="server"に ASP エンジンがその側からいくつかの文字列を先頭に追加するためです。ASP.NET にはメカニズム (INamingContainer) が組み込まれており、同じ名前のコントロールが複数存在しないようにします。これは、コンテナー プレフィックスを追加することによって行われます。

そう

<asp:TextBox ID="txtShowMessage" runat="server"></asp:TextBox>

のようなものに変わります

<input type="text" id="ctl00_ctl00_txtShowMessage" runat="server" />

だからdocument.getElementById('txtShowMessage')うまくいかない。完全な ID を取得する必要があります。だから、あなたが使用することができますdocument.queryselector('[id$=txtShowMessage]')。これは、ID が で終わる要素を取得することを意味しtxtShowMessageます。
そうでなければ、あなたはこのようにすることができます

document.getElementById('<%=txtShowMessage.ClientID  %>');


1. 私が言及した 2 番目のアプローチの方が優れています ( を使用ClientID)。
2. 完全な ID を知りたい場合は、Web ページにアクセスしてそのソースを表示し、その TextField を見つけて ID を確認します (毎回変更されるわけではなく、修正されています)
3. 詳細については、こちらを参照してください。

于 2013-06-06T04:14:36.237 に答える