jquery - включить определенные элементы в списке радиокнопок asp.net

Я знаю, что об этом уже спрашивали, но это не работает для моего сценария. У меня есть модальная форма пользовательского интерфейса jquery, которая содержит список радиокнопок со статическими значениями:

    <asp:RadioButtonList ID="rblSlots" runat="server" ViewStateMode="Disabled">
    <asp:ListItem Value="30" enabled="false">30 Minutes</asp:ListItem>
    <asp:ListItem Value="60" enabled="false">1 Hour</asp:ListItem>
    <asp:ListItem Value="90" enabled="false">1 1/2 Hours</asp:ListItem>
    <asp:ListItem Value="120" enabled="false">2 Hours</asp:ListItem>
    <asp:ListItem Value="150" enabled="false">2 1/2 Hours</asp:ListItem>
    <asp:ListItem Value="180" enabled="false">3 Hours</asp:ListItem>
    </asp:RadioButtonList>

Что, конечно же, выглядит как:

    <table id="rblSlots">
    <tr>
    <td><span disabled="disabled"><input id="rblSlots_0" type="radio" name="rblSlots" value="30" disabled="disabled" /><label for="rblSlots_0">30 Minutes</label></span></td>
    </tr><tr>
    <td><span disabled="disabled"><input id="rblSlots_1" type="radio" name="rblSlots" value="60" disabled="disabled" /><label for="rblSlots_1">1 Hour</label></span></td>
    </tr><tr>
    <td><span disabled="disabled"><input id="rblSlots_2" type="radio" name="rblSlots" value="90" disabled="disabled" /><label for="rblSlots_2">1 1/2 Hours</label></span></td>
    </tr><tr>
    <td><span disabled="disabled"><input id="rblSlots_3" type="radio" name="rblSlots" value="120" disabled="disabled" /><label for="rblSlots_3">2 Hours</label></span></td>
    </tr><tr>
    <td><span disabled="disabled"><input id="rblSlots_4" type="radio" name="rblSlots" value="150" disabled="disabled" /><label for="rblSlots_4">2 1/2 Hours</label></span></td>
    </tr><tr>
    ...etc...

в моем диалоговом окне открытия формы я делаю сообщение ajax, чтобы захватить некоторые значения из моего веб-сервиса, среди них «временной интервал» в следующем javascipt, я установил временной интервал в статическую переменную для отладки, я хочу включить переключатели, которые ‹= временной интервал .

    var strTS = "30,60,90,120,150,180";
    var aryTS = strTS.split(",");
    var timespan = 120;

    for (i = 0; i <= 5; i++) {

        if ($('#rblSlots [value=' + aryTS[i] + ']').val() <= timespan) {

           $('#rblSlots [value=' + aryTS[i] + ']').removeAttr("disabled");

        }
    }

    $("#appointment-form").dialog("open");
    return false;

person user1457613    schedule 21.07.2012    source источник


Ответы (2)


вы можете использовать метод prop:

$('#rblSlots input[value=' + timespan + ']').prop('disabled', false)

ДЕМО

person undefined    schedule 21.07.2012
comment
Это тоже не работает. Я тоже пробовал .prop('disabled', false), у меня есть другие элементы текстового поля в других модальных формах на моей странице, которые отлично включаются с помощью removeAttr. Я использую jQuery 1.6.2. Добавленный вами тег input не имеет значения в любом случае, если я добавлю предупреждение в свой цикл for.. выше, я получу четыре предупреждения: 30, 60, 90, 120. - person user1457613; 22.07.2012

После очистки кешей в IE и Firefox выяснилось, что приведенный выше код действительно работает в Firefox, но почему-то не в IE. Поэтому я отказался от этого метода в пользу того, который в любом случае придавал мне более эстетичный вид.

Отказался от списка RadioButtonList для радиокнопок в таблице.
Добавлены уникальные имена классов и style='display:none;' к строкам, содержащим Радио. и мой javascript для:

    for (i = 0; i <= 5; i++) {
      if (aryTS[i] <= timespan) {
        $(".Slot_" + aryTS[i]).show();
      }
    } 

Отлично работает в IE и Firefox

person user1457613    schedule 23.07.2012