0

如果单选按钮列表值为“N”,我正在尝试显示/隐藏标签控件。代码工作正常,但是当我取消选中单选按钮时,标签控件不会隐藏。另外我正在使用 Jquery mousedown 事件来清除选择。请建议。

var radioList = "#<%= radioLst1.ClientID %>";
  var lblID = document.getElementById('<%=LblIDNumber.ClientID%>');

    $(radioList + " input:radio").click(function (e) {
        if ($('#<%= radioLst1.ClientID %> input:checked').val() == "N") {
            lblID.style.display = $(this).attr("checked") ? 'inline' : 'none';
        }
        else {
            lblID.style.display = 'none';
        }
    });

我正在使用以下代码来清除单选按钮列表的选择。

 $(radioList + " input:radio").mousedown(function (e) {
        if ($(this).attr("checked") == true) {
            setTimeout("$('input[id=" + $(this).attr('id') + "]').removeAttr('checked');", 200);
            lblID.style.display = 'none';
        }
        else {
            return true
        }
    });

                <asp:Label ID="LblIDNumber" style="display:none" runat="server">Number</asp:Label>

                <asp:RadioButtonList ID="radioLst1" runat="server">
                    <asp:ListItem Value="U">Unknown</asp:ListItem>
                    <asp:ListItem Value="N">Not Applicable</asp:ListItem>
                </asp:RadioButtonList>
4

2 回答 2

0

您不应该将事件附加到您的radioLst1.ClientID这将被 asp.net 翻译成表格

您可以像这样简化流程

var lblID = $('#mylabel');


 $('input:radio').on('click', function(){

   if($(this).val() == 'N')
   {
   lblID.hide();
  }else{
  lblID.show();
  }       

 });

你控制

<label id="mylabel">This is a label</label>

 <input id="radioLst1_0" type="radio" value="U" name="radioLst1">
  <label for="radioLst1_0">Unknown</label>

 <input id="radioLst1_1" type="radio" value="N" name="radioLst1">
     <label for="radioLst1_1">Not Applicable</label>

这是一个工作小提琴

于 2012-09-18T19:46:57.327 回答
0

您可以将所有这些包装到 UpdatePanel 中。然后为每个按钮单击触发事件背后的代码(您可以将它们全部订阅到同一个事件),然后将标签绑定到按钮的 .Checked 属性。UpdatePanel 将使一切异步。

我建议将此作为 javascript/jquery 的替代方案。它将更清洁,更易于管理。开始时多加一点标记,但随后进行更改将非常容易。

于 2012-09-18T20:14:03.000 回答