JQuery:获取ASP.NET CheckBoxList控件中复选框的值/ text/innerHtml

MGO*_*wen 2 asp.net jquery checkboxlist

我有一堆由asp.net CheckBoxList控件生成的复选框.我想获取用户在页面上控件旁边看到的文本.

使用类似的控件,如RadioButtonList,我已经能够通过这样做在jQuery中获取它们的值:

var selected = $("input:checked[id*='" + Control.id + "']");
Run Code Online (Sandbox Code Playgroud)

然后循环并获取值:

var whatIwant = selections[i].value;
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,"值"将是我想要的文本).

但是 - CheckBoxList渲染方式不同.对于每个ListItem,不仅有输入,还有像这样的html标签:

<input id="ctl00_ContentPlaceHolder1_ConsultedList_0" type="checkbox" name="ctl00$ContentPlaceHolder1$ConsultedList$0" />
<label for="ctl00_ContentPlaceHolder1_ConsultedList_0">Other service providers</label>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,输入标记本身,这是我的小jQuery查询找到的,不包括我想要的信息:"其他服务提供商".那是在标签上.

任何人都可以想到一个很好的解决方案 - 也许是一个让CheckBoxList在输入标签中呈现我需要的文本的好方法,或者一些聪明的jQuery来找到与所选输入相对应的标签?

red*_*are 10

您可以使用已经使用的选择器(但只使用clientId),然后获取下一个兄弟(标签)并获取其文本值

例如

$("#" + Control.ClientId).next().text();
Run Code Online (Sandbox Code Playgroud)

或者您可以通过使用其for属性来获取标签

$("label[for=" + Control.ClientId + "]").text();
Run Code Online (Sandbox Code Playgroud)


CMS*_*CMS 5

您将不得不迭代表单元素,搜索标签并获取其内部文本,ASP .NET使用控件的ClientID将复选框包装在表中,您可以使用如下选择器:

  var selection = [];
  $('#<%= CheckBoxList.ClientID %> :checked').each(function () {
    selection.push($(this).next('label').text());
  });
Run Code Online (Sandbox Code Playgroud)

ASP .NET为CheckBoxLists呈现的HTML如下所示:

<table id="check1" border="0">
    <tr>
        <td><input id="check1_0" type="checkbox" name="check1$0" />
                <label for="check1_0">Item 1</label></td>
    </tr><tr>
        <td><input id="check1_1" type="checkbox" name="check1$1" />
                <label for="check1_1">Item 2</label></td>
    </tr>
  .....
</table>
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看ASP .NET生成的标记示例.