启用asp.net单选按钮列表中的特定项目



我知道以前有人问过这个问题,但它不适用于我的场景。我有一个jquery ui模态表单,它包含一个带有静态值的单选按钮列表:

    <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文章,从我的Web服务中获取一些vaue,其中包括以下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;

您可以使用prop方法:

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

演示

在清除IE和Firefox中的缓存后,发现上面的代码确实在Firefox中有效,但由于某种原因,它在IE中不起作用。所以我放弃了这个方法,因为它让我看起来更美观。

放弃了表中单选按钮的单选按钮列表
提供了唯一的类名,并且style='display:none;'到包含收音机的行。和我的javascript到:

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

在IE和Firefox 中运行良好

最新更新