Как получить индекс выбранных элементов CheckBoxList Asp.net и его текстовое значение с помощью jquery - PullRequest
0 голосов
/ 24 августа 2010

Как получить индекс выбранных элементов ASP.NET CheckBoxList и его текстовое значение с помощью jQuery

Я использовал указанный код, но он не работал со мной.

Первые двастроки будут возвращать сообщение с неопределенной строкой

var index = $('#<%=chkListGroups.ClientID %>').attr("selectedIndex");
alert(index);

вторые две строки будут возвращать пустое сообщение.

var text = $('#<%=chkListGroups.ClientID %>').val();
alert(text);

Ответы [ 2 ]

2 голосов
/ 25 августа 2010
var indices = '';
$('#<%=chkListGroups.ClientID %> input:checkbox').each(function (index) { 
   if ($(this).filter('input:checkbox:checked').length == 1) { 
       indices += (index + ' '); 
   }
});
alert(indices);

должен печатать индексы.

Если под «текстовым значением» вы подразумеваете то, что будет возвращено из свойства Value элемента ListItem в ASP.NET, оно не будет напрямую включено в Интернетстраница автоматически.Одним из способов решения этой проблемы было бы создание массива javascript свойств Value в коде .NET для страницы, а затем использовать что-то похожее на приведенное выше для поиска значения в массиве.Если массив называется «valueArray», то вы могли бы заменить код в теле приведенного выше «if» на

indices += (valueArray[index] + ' ');

Надеюсь, это поможет - я, безусловно, приветствую любые вопросы.

РЕДАКТИРОВАТЬ (следующий комментарий отправителя):

Если вы хотите видеть видимую метку каждого отмеченного элемента, это должно работать:

var text = $('#<%=chkListGroups.ClientID %> input:checkbox:checked').siblings('label').text();
alert(text);
0 голосов
/ 24 августа 2010

Редактировать : неправильно прочитать исходный вопрос - соответственно обновить этот ответ.

ASP.NET отображает элемент управления checkBoxList в виде серии флажков (вы можете использовать firebug, чтобы легко увидетьвизуализированные элементы управления).Я полагаю, что он назначает идентификатор каждого флажка на основе указанного вами идентификатора.Например:

<asp:CheckBoxList id="list1" runat="server">
    <asp:ListItem>One</asp:ListItem>
    <asp:ListItem>Two</asp:ListItem>
    <asp:ListItem>Three</asp:ListItem>
</asp:CheckBoxList>

отображается в HTML как:

<table id="list1">
    <tr><td><input id="list1_0" type="checkbox" /><label for="list1_0">One</label></td></tr>
    <tr><td><input id="list1_1" type="checkbox" /><label for="list1_1">Two</label></td></tr>
    <tr><td><input id="list1_2" type="checkbox" /><label for="list1_2">Three</label></td></tr>
</table>

Вы можете определить, установлен ли флажок с помощью:

$('#list1_0').attr('checked')

Вы также можете найтивсе они через:

$('#list1 input')

... затем используйте итерацию jQuery для сканирования всех флажков.Я подозреваю, что jQuery также может быть использован, чтобы найти следующий элемент управления «label» после целевого флажка и извлечь из него фактический текст.Один из больших мозгов JQuery от stackoverflow должен будет помочь с точным синтаксисом селектора - я относительно новичок в jQuery, и я не знаю его из головы.

Оригинальный ответ (применяется к простым selectionLists) :

Это должно получить выбранный индекс:

$("#SomeListID").attr("selectedIndex")

Это должно получить выбранное значение:

$("#SomeListID").val()
...