Как получить или установить выбранный индекс списка переключателей с помощью jquery?

Как я могу установить переключатель с помощью индекса... Ниже приведен мой код asp.net C# для списка радионных кнопок...

<asp:RadioButtonList runat="server" ID="rdlCategory" CssClass="clsradio" AppendDataBoundItems="true" RepeatDirection="Horizontal" RepeatLayout="Flow" >
</asp:RadioButtonList>

и связать его с помощью C# динамически.. и HTML выглядит

<span class="clsradio" id="ctl00_cphTop_rdlCategory"><input type="radio" value="8" name="ctl00$cphTop$rdlCategory" id="ctl00_cphTop_rdlCategory_0"> 
    <label for="ctl00_cphTop_rdlCategory_0">category1</label>
    <input type="radio" value="11" name="ctl00$cphTop$rdlCategory" id="ctl00_cphTop_rdlCategory_1">
    <label for="ctl00_cphTop_rdlCategory_1">category2</label>
    <input type="radio" value="22" name="ctl00$cphTop$rdlCategory" id="ctl00_cphTop_rdlCategory_2">
    <label for="ctl00_cphTop_rdlCategory_2">category3</label>
    <input type="radio" value="33" name="ctl00$cphTop$rdlCategory" id="ctl00_cphTop_rdlCategory_3">
    <label for="ctl00_cphTop_rdlCategory_3">category4</label>
    <input type="radio" value="34" name="ctl00$cphTop$rdlCategory" id="ctl00_cphTop_rdlCategory_4">
    <label for="ctl00_cphTop_rdlCategory_4">category5</label>
    </span>

Я хочу добавить атрибут check =true к переключателю по значению индекса.
предположим, я передал index=2, тогда он должен быть выбран Category2 ..
или также хотите получить выбранный (проверенный = истинный) индекс переключателя, используя в jquery..

Как мне это сделать?

5 ответов

Решение

В отличие от блоков выбора, в переключателях нет понятия индекса.

Однако вы можете сделать что-то подобное в jQuery:

$(".clsradio input:checked").index();

Который получит все входные поля в пределах вашего диапазона, которые отмечены (которые при использовании радио должны быть только один, если внутри.clsradio только одна группа).

Вот пример на jsfiddle


РЕДАКТИРОВАТЬ:

Более полный пример доказательства (но медленнее) будет:

$("input[name$='rdlCategory']:checked").index();

Который получает входные данные, заканчивающиеся на rdlCategory. Вы могли бы даже добавить ": радио", но вам не нужно.


РЕДАКТИРОВАТЬ 2 - Проверка путем передачи в индекс.

Ты можешь использовать:

 $(".clsradio input:nth-child(5)").attr("checked", "checked");

В качестве индекса можно использовать nth-child, использующий селектор "input".

    $("#<%= rdlCategory.ClientID %> input:checked").index();

Что касается выбора элементов в ASP.NET с использованием jQuery, я не уверен, что он будет работать во всех сценариях. ASP.NET обновляет ViewState каждый раз, когда вы касаетесь элемента управления ASP.NET, поэтому я бы не стал использовать jQuery для манипулирования значениями выбора

если ты все еще хочешь это тогда $(selector).attr("checked",true);

Это работает для меня:

$($("input[name='GroupName']").get(index)).prop('checked', true);

Объяснение:

$("input[name='GroupName']") возвращает список элементов с именем "GroupName"

.get(index) возвращает iый пункт в списке. В случае радиогруппы это будет тег ввода, который вы хотите.

Входной тег - это элемент HTML, а не элемент jQuery, поэтому его нужно перенести. Тогда вы можете позвонить prop метод.

$(html).prop('checked',true)

Использовать индексный метод jquery

function selectRadioButton(inputindex){
    $('input[name="ctl00$cphTop$rdlCategory"]').index(inputindex).attr('checked', true);
}

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

var selectedIndex =  $('input[name="ctl00$cphTop$rdlCategory"]').attr('checked', true).index(inputindex);

Если флажок не установлен, будет указано "неопределенное", в противном случае будет возвращено значение выбранного объекта.

$('input[name=ctl00$cphTop$rdlCategory]:checked').val()
Другие вопросы по тегам