在客户端访问嵌套转发器的文本框

时间:2014-06-12 01:58:52

标签: javascript jquery asp.net

如何在父级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>

3 个答案:

答案 0 :(得分:0)

您可以使用核对表parent()属性

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

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

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

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

答案 1 :(得分:0)

这适用于你的标记:

$(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
        })

    });
});

答案 2 :(得分:0)

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

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