【问题标题】:Accessing nested repeater's textbox in client side在客户端访问嵌套中继器的文本框
【发布时间】:2023-04-04 16:45:03
【问题描述】:

如何在父Repeater控件的客户端事件中获取嵌套的repeater文本框控件。

我在父转发器控件的每个转发器项目中都有一个复选框,在子转发器的每个转发器项目中都有一个文本框。在复选框更改事件中,我需要查找客户端中该项目的子转发器文本框中是否有任何值。

我给文本框一个类,但是下面的代码循环遍历父转发器内的所有文本框。

$('.RepeaterTextBox').each(function () { var txtvalue= $(this).val();

为单个父级渲染的 HTML 如下所示

   <table>
      <tr>
       <td>
          <input id="chkActive_0" name="chkActive" />
      </td>
  </tr>
  <tr>
      <td>
          <div id="divText" style="padding-left: 15px; display: none;">

              <table style="width: 100%">

                  <tr>
                      <td>
                          <div id="Category_0">

                              <textarea name="txtCategoryText" rows="2" cols="20"       id="CategoryText_0" class="RepeaterTextbox"></textarea>
                          </div>
                      </td>
                      <td>
                          <div id="Category_1">
                              <textarea name="txtCategoryText" rows="2" cols="20" id="CategoryText_1" class="RepeaterTextbox"></textarea>
                          </div>
                      </td>
                  </tr>
              </table>
          </div>
      </td>
  </tr>
      </table>

【问题讨论】:

  • 请告诉我们您到目前为止所做的尝试并提供您的代码。
  • 在你的服务器端代码中,给每个文本框一个类。然后在客户端,您可以使用该类获取所有input 控件
  • 附加任何单个中继器项目(父项)的呈现 HTML
  • @RashminJaviya,我包含了单个中继器的渲染 html

标签: javascript jquery asp.net


【解决方案1】:

试试这个,嵌套转发器中似乎有多个文本区域,因此事件处理程序中的第二行将循环遍历每个文本区域并在控制台中打印值。

$("[type=checkbox]").on("change", function () {
    var oTexts = $(this).parents("tr").next().find("textarea");
    $(oTexts).each(function (ind, val) { console.log($(val).val()); });
});

【讨论】:

    【解决方案2】:

    您可以使用清单parent() 属性

    假设你渲染的 html 看起来像这样

    <div id="repeater_435734957439857435">
       <input type="text" class="RepeaterTextbox">Test</input>
       <input type="checkbox">
    </div>
    

    您的复选框选择事件可能类似于

    $(this).parent().find(".RepeaterTextbox")[0].text();
    

    【讨论】:

    • 我的文本框在父级的子/嵌套中继器中
    【解决方案3】:

    这应该适用于您的标记:

    $(document).ready(function () {
        $(document).on("click", "input:checkbox[name='chkActive']:checked", function () {
            var nexttr = $(this).closest('tr').next('tr');
            $(nexttr).find('textarea').each(function () {
    
                alert($(this).val());//Or whatever you want
            })
    
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 2023-03-07
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多