【问题标题】:Clear ASP TextBox text in a user control using jQuery from main page使用 jQuery 从主页清除用户控件中的 ASP TextBox 文本
【发布时间】:2020-08-05 12:02:08
【问题描述】:

我有一个 ASP .NET 页面,其中包含多个中继器内动态创建的用户控件(单个控件的所有实例)。这些用户控件中的每一个都包含一个文本框,我想使用它下面的 HTML 按钮将其清空。因为我不想导致任何回发,所以我尝试使用 jQuery 在所有客户端执行此操作。

在主页上我有以下内容:

var removeCommentBtns = $('.remove-comment-btn');
for (let i = 0; i < removeCommentBtns.length; i++) {
    if (removeCommentBtns.val() != null) {
        removeCommentBtns[i].addEventListener("click", function () {
            //blank out text box
        })
    }
};

这会循环遍历我想要添加文本框清除事件的所有按钮,但我没有运气弄清楚我需要在事件侦听器中放入什么来清空文本框。我无法使用 $('#&lt;%=txtTextBox.ClientID %&gt;') 引用文本框,因为文本框位于我的用户控件中。

我还尝试了各种 DOM 操作,例如查找文本框所在的上一个 span 并设置 textContent $(this).prevAll('.span-clause-comment')[0].textContent = "";,但这也会导致文本框本身消失。

我确定我缺少一些基本的东西!

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    我认为这可以解决您访问动态创建的元素的问题。 Access dynamically created items using jQuery?

    但我更喜欢使用原生 javascript。所以我建议你使用事件委托,你需要访问页面加载时已经存在的最近的父元素,然后使用 event.target 访问任何动态创建的子元素。

    【讨论】:

    • 感谢您的回复,但我不知道这对我有什么帮助?我从创建的按钮触发事件没有问题,我的问题是如何在父页面的子控件中定位&lt;asp:TextBox&gt;。
    【解决方案2】:

    我终于想通了。通过找到最近的 div,然后使用通配符找到文本框,我能够将文本框中的文本清空(或设置)。

    var txt = $(this).closest("div").find("[id*=txtTextBox]");
    txt[0].textContent = "";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多