Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在同一网页上多次使用WebUserControl_Javascript_Asp.net_.net_Webusercontrol - Fatal编程技术网

Javascript 如何在同一网页上多次使用WebUserControl

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

在Asp.net网页应用程序上工作。我有一个用户WebUserControl,它包含两个文本框和两个javascript语法,我的控件将一个文本框信息复制到另一个文本框中。当我在同一页上多次使用我的用户控件时,会出现问题。 我的用户控件在使用了几次后工作不正常,如何解决这个问题

我的用户控件语法:

<%@ 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>