如何在 asp.net webfroms aspx 中将文本从 asp:textbox 复制到另一个 asp:textbox

how to copy text from an asp:textbox to another asp:textbox in asp.net webfroms aspx

我几个小时以来一直在努力寻找解决方案。

asp:文本框 1:

<asp:TextBox runat="server" ID="code" placeholder="<%$ Resources:ErrorMessages, EnterCode %>" CssClass="enterCode"></asp:TextBox><br /> 

asp:文本框 2:

<asp:TextBox runat="server" ID="code2" placeholder="<%$ Resources:ErrorMessages, EnterCode %>" CssClass="enterCode"></asp:TextBox><br />

按钮:

<asp:Button CssClass="btn btn-primary" runat="server" ID="buttonEnable2" OnClick="buttonEnable_Click" Text="<%$ Resources:UserMessages, Enable %>" />

我正在尝试将文本从文本框 2 复制到文本框 1。

文本框 2 嵌入在 bootstrap 弹出窗口的 jquery 手风琴中。

我试过:

aspx.cs中最简单的一个:

code.text = code2.text;

链接到 aspx 文件的 javascript 文件中的一些 jquery:

$("#buttonEnable2").click(function () {
        $('#code').val($('#code2').val());
        alert('test');

    });

上面的代码似乎根本不起作用,它甚至没有给我一个警报。

此代码在 javascript

  <script>
            function Copy() {
                var n1 = document.getElementById('code');
                var n2 = document.getElementById('code2');
                n2.value = n1.value;
            }
        </script>

你的按钮应该像

<asp:Button CssClass="btn btn-primary" runat="server" ID="buttonEnable2" OnClientClick="Copy()" OnClick="buttonEnable_Click" Text="<%$ Resources:UserMessages, Enable %>" /> 希望对你有帮助。

您的文本框属于 asp.net,它改变了文本框 ID 相对于 ContentPlaceHolder 的文本框。所以 jquery 无法找到文本框。

您可以使用 ClientIDMode="Static" 这样文本框的 ID 就不会改变。将此 属性 也用于其他文本框。

<asp:TextBox runat="server" ID="code" ClientIDMode="Static" placeholder="<%$ Resources:ErrorMessages, EnterCode %>" CssClass="enterCode"></asp:TextBox>

然后使用 jquery 将文本从一个文本框复制到另一个文本框。

$('#code').val($('#code2').val());

如果您在 asp.net 中使用母版页、更新面板等,文本框的 ID 将自动替换为动态 ID,因此您可能需要执行以下操作,这将有助于 如果你不想把ClientIDMode改成Static

首先声明一个 javascript 变量并将文本框的动态 ID 分配给它,JQuery 将是

$(document).ready(function(){ 
  var txtBox1 = <%=code.ClientId%>;
  var txtBox2 = <%=code2.ClientId%>;
});

现在您可以使用这两个变量将文本相互复制

$("#buttonEnable2").click(function () {
    $('#' + txtBox1).val($('#' + txtBox2).val());
});

您也可以通过以下方式使用document.getElementById。

var n1 = document.getElementById(<%=code.ClientId%>);
var n2 = document.getElementById(<%=code2.ClientId%>);

希望对您有所帮助。

问题是您在弹出框内使用手风琴,它会克隆弹出框内的所有内容,处理所有内容的 ID。因此,当您在文本框中键入一个值时,它会将其附加到文本框的克隆,而不是实际的文本框。

解决方法如下:

function clickEnable2() {
    var txtBox1 = this.parentElement.getElementsByClassName("enterCode")[0].value;
    $("#MainContent_code").val(txtBox1);
    $("#MainContent_buttonEnable").click();
}
$("#MainContent_buttonEnable2").click(clickEnable2);