无法选中单选按钮

问题描述 投票:0回答:1

我的Webforms应用程序包括一个用户控件,该控件使用一对单选按钮使用户能够选择“输入新任务”(这会导致显示一个文本框)或“或选择现有任务”(这会导致一个要显示的列表框。我使用jQuery来显示和隐藏文本框和列表框,并且这没有问题。

我的问题是单选按钮本身。尽管两个单选按钮具有相同的组名“ NewOrExisting”,但rdoNew始终保持选中状态,而rdoExisting处于未选中状态。我的问题当然是如何使这些单选按钮正常工作?

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="Pop_Pretask.ascx.vb" Inherits="Pop_Pretask" %>
 <a href="#" style="display:none;visibility:hidden;" onclick="javascript:return false" id="hidlinkAddPretask" 
runat="server">dummy</a>

<cc1:ModalPopupExtender ID="mpePretask" runat="server"  PopupControlID="pnlPretask" TargetControlID="hidlinkAddPretask"
     CancelControlID="btnCancelPretask" PopupDragHandleControlID="lblDragHandlePretask"></cc1:ModalPopupExtender>

<asp:Panel ID="pnlPretask" runat="server" CssClass="popupPanel" Width="40%">

    <asp:UpdatePanel ID="updPretask" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
       <ContentTemplate>

               <asp:BulletedList ID="blAllPretasks" runat="server">
                </asp:BulletedList>

             <asp:HiddenField runat="server" ID="hidPostTaskID" Visible="true" />
            <asp:HiddenField runat="server" ID="hidGoalID" Visible="true" />

            <h2 runat="server" ID="lblDragHandlePretask" Width="100%">
                 Before <b>"<asp:Label ID="lblAddPretask" runat="server"></asp:Label>"</b> can be completed, I must:
            </h2>

           **<asp:RadioButton ID="rdoNew" GroupName="NewOrExisting" runat="server" AutoPostBack="false"
                Text="Enter a new task    " onclick="fnNewPretask();return false;" Checked="true"
                Enabled="true" />
           <asp:RadioButton ID="rdoExisting" GroupName="NewOrExisting" runat="server"  AutoPostBack="false"
                Text="Or select an existing task." onclick="fnExistingPretask();return false;" 
                Checked="false" Enabled="true" />**
           <asp:TextBox id="txtNewPretaskName" runat="server" width="100%" Visible="true"/>
           <br />
          <asp:ListBox ID="lboxPretask" runat="server" Width="100%" Height="200px"
                 AutoPostBack="false"
                 SelectionMode="Single"
                Style="display:none"
              >
          </asp:ListBox>

       </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnAddAnotherPretask" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>

    <asp:UpdateProgress ID="UpdateProgress4" runat="server" DisplayAfter="0">
        <ProgressTemplate>
            <img src="images/progress.gif" alt="" />&nbsp;Updating...
        </ProgressTemplate>

    </asp:UpdateProgress>

    <br />
    <asp:Label runat="server" ID="lblErrPretask" Font-Bold="True" ForeColor="Red" />

    <asp:Button ID="btnAddAnotherPretask" runat="server" Text="Save and Add Another" />
    <asp:Button ID="btnSavePretask" runat="server" Text="Save" />
    <asp:Button ID="btnCancelPretask" runat="server" Text="Cancel"   OnClientClick="return false;" />

</asp:Panel>

<script type="text/javascript">

    function fnNewPretask() {
        //$("#<%=rdoExisting.ClientID%>").attr('checked', false);
        //$("#<%=rdoNew.ClientID%>").attr('checked', true);
        $("#<%=txtNewPretaskName.ClientID %>").show();
        $("#<%=lboxPretask.ClientID %>").hide();
    }

    function fnExistingPretask() {
        //$("#<%=rdoNew.ClientID%>").attr('checked', false);
        //$("#<%=rdoExisting.ClientID%>").attr('checked', true);
        $("#<%=txtNewPretaskName.ClientID%>").hide();
        $("#<%=lboxPretask.ClientID %>").show();
    }

</script>

如上面的代码所示,单选按钮位于ModalPopupForm内,后者又包含一个UpdatePanel(这是必需的,以便每次调用弹出式窗口时,列表框都可以在服务器上填充)。这些并发症可能导致单选按钮出现故障。

谢谢您的任何建议。

javascript asp.net radio-button updatepanel modalpopup
1个回答
0
投票

我从另一个来源得到了这个问题的答案。问题出在javascript“ return false;”。我将其添加到每个单选按钮的onclick末尾。我误以为应该总是加上“ return false”。以防止页面回发到服务器。我现在知道了。

© www.soinside.com 2019 - 2024. All rights reserved.