Evento di modifica del testo in ASP.NET
Domanda
Ho due caselle di testo, Text1 e Text2, in un pannello di aggiornamento. Il codice è qui:
<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>
E ho scritto questo codice su textchanged
evento di text1:
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
TextBox2.Text = TextBox1.Text
End Sub
Ora il problema è che quando inserisco il testo in text1, quindi premi Invio in poi il testo di text2 è uguale al testo di text1, ma voglio farlo prima di premere ENTER in text1. Voglio dire, come ho chiarito in text1, quindi il testo di text2 dovrebbe essere uguale a text2.
Soluzione
Se si desidera gestire l'evento Keydown, hai bisogno di JavaScript:
<asp:TextBox ID="TextBox1" onkeydown="document.getElementById('TextBox2').value=this.value" runat="server" AutoPostBack="false"></asp:TextBox>
Altri suggerimenti
Puoi usare jQuery per fare quello che vuoi.
$('#<%=TextBox1.ClientID %>').keyup(function(event) {
var value = $(this).val();
$('#<%=TextBox2.ClientID %>').text(value);
});
Dato che gestisci il problema sul lato client, non è necessario impostare AutoPostBack
più vero.
Pagina .aspx
<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>
Pagina CODEBEHIND
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Attributes.Add("onkeyup", "chngtxtbxval();");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow