Javascript 如何在同一网页上多次使用WebUserControl
在Asp.net网页应用程序上工作。我有一个用户WebUserControl,它包含两个文本框和两个javascript语法,我的控件将一个文本框信息复制到另一个文本框中。当我在同一页上多次使用我的用户控件时,会出现问题。 我的用户控件在使用了几次后工作不正常,如何解决这个问题 我的用户控件语法:Javascript 如何在同一网页上多次使用WebUserControl,javascript,asp.net,.net,webusercontrol,Javascript,Asp.net,.net,Webusercontrol,在Asp.net网页应用程序上工作。我有一个用户WebUserControl,它包含两个文本框和两个javascript语法,我的控件将一个文本框信息复制到另一个文本框中。当我在同一页上多次使用我的用户控件时,会出现问题。 我的用户控件在使用了几次后工作不正常,如何解决这个问题 我的用户控件语法: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="transferControl.ascx.cs" Inherits="t
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="transferControl.ascx.cs" Inherits="testControl.transferControl" %>
<script type="text/javascript">
function IsAccNumberValid(txtAccountNumber) {
debugger;
document.getElementById("<%= txtTo.ClientID %>").value = txtAccountNumber.value;
}
</script>
<asp:TextBox runat="server" ID="txtFrom" onblur="Javascript:IsAccNumberValid(this);" />
<asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
函数IsAccNumberValid(txtAccountNumber){
调试器;
document.getElementById(“”).value=txtAccountNumber.value;
}
我使用的页面语法:
<%@ Register src="transferControl.ascx" tagname="transferControl" tagprefix="uc1" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<uc1:transferControl ID="transferControl1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" />
<uc1:transferControl ID="transferControl2" runat="server" />
</asp:Content>
像这样更改用户控制代码。下面的代码用直接Javascript语句替换IsAccNumberValid()函数。所以不会有任何重复的函数定义
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="transferControl.ascx.cs" Inherits="testControl.transferControl" %>
<asp:TextBox runat="server" ID="txtFrom" />
<asp:TextBox ID="txtTo" runat="server" ></asp:TextBox>
<script type="text/javascript">
var txtFrom = document.getElementById("<%= txtFrom.ClientID %>");
var txtTo = document.getElementById("<%= txtTo.ClientID %>");
txtFrom.onblur = function () {
txtTo.value = txtFrom.value;
}
</script>
var txtFrom=document.getElementById(“”);
var txtTo=document.getElementById(“”);
txtFrom.onblur=函数(){
txtTo.value=txtFrom.value;
}
一般的解决方案是使用唯一的密钥
在代码behinde(C#)中生成唯一密钥:
使用javascript函数名或html元素id的键使其唯一:
<script type="text/javascript">
function DisplayMessage_<%=uniqueKey %>() {
var message = document.getElementById("<%=TextBox1.ClientID %>").value;
alert(message);
return false;
}
</script>
<div id="myDiv_<%=uniqueKey %>">Test</div>
函数DisplayMessage_u389;(){
var message=document.getElementById(“”)值;
警报(信息);
返回false;
}
试验
查看更多详细信息。同一网页上相同用户控件的多个副本也会在网页上创建java脚本代码的多个副本。在您的情况下,IsAccNumberValid()将在您的网页上定义两次,并因此引发JavaScript错误。Kiran Varsani,谢谢您的回复。您的语法不起作用。请检查。我已更改了脚本标记和文本框的顺序。这解决了问题。文本框需要首先定义,因为在本例中,页面试图直接运行JavaScript函数。请尝试一下这个代码。
<script type="text/javascript">
function DisplayMessage_<%=uniqueKey %>() {
var message = document.getElementById("<%=TextBox1.ClientID %>").value;
alert(message);
return false;
}
</script>
<div id="myDiv_<%=uniqueKey %>">Test</div>