asp.net中的文本更改事件

时间:2012-02-20 14:02:52

标签: asp.net textbox onkeydown

我在更新面板中有两个文本框,Text1和Text2。代码在这里:

 <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="Panle" >
        <ContentTemplate>
        <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True"></asp:TextBox>
        </ContentTemplate> 
        </asp:UpdatePanel>

我已经在Text1的textchanged事件上编写了这段代码:

  Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        TextBox2.Text = TextBox1.Text
    End Sub

现在的问题是,当我在Text1中输入文本,然后按Enter键,然后text2的文本等于text1的文本,但我想在按下text1中的输入之前执行此操作。我的意思是当我按下text1然后text2的文本应该等于text2。

3 个答案:

答案 0 :(得分:3)

您可以使用JQuery来执行您想要的操作。

$('#<%=TextBox1.ClientID %>').keyup(function(event) {
   var value = $(this).val();
   $('#<%=TextBox2.ClientID %>').text(value);
});

由于您在客户端处理问题,因此无需再将AutoPostBack设置为True。

答案 1 :(得分:2)

如果你想处理keydown事件,你需要javascript:

<asp:TextBox ID="TextBox1" onkeydown="document.getElementById('TextBox2').value=this.value" runat="server" AutoPostBack="false"></asp:TextBox>

答案 2 :(得分:0)

.aspx page

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <script type="text/javascript">
    function chngtxtbxval()
    {
      var t1=document.getElementById("TextBox1").value;
      var t2=document.getElementById("TextBox2");
      t2.value=t1;

    }
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </div>
    </form>
    </body>
    </html>

代码隐藏页面

    protected void Page_Load(object sender, EventArgs e)
    {
    TextBox1.Attributes.Add("onkeyup", "chngtxtbxval();");
    }