【问题标题】:Unable to determine if Radio Button is checked无法确定是否选中了单选按钮
【发布时间】:2016-12-28 10:59:30
【问题描述】:

我尝试使用 document.getElementById 方法来确定 ListView 中的单选按钮是否已被选中。该检查的结果是“未确定”的值,尽管我实际上已经检查了其中一个单选按钮。我在一个循环中执行此操作,ID 将循环的索引附加到 ID 名称。

与此问题相关的代码如下:

<script type="text/javascript" >
function AllPickEmGamesSelected(visible)
{
    var i;
    for (i=0; i<16; i++) 
    {
        var HomeTeamVerif = document.getElementById("FeaturedContent_ListViewPickEm_RadioButtonHome_" + i).Checked;
        var AwayTeamVerif = document.getElementById("FeaturedContent_ListViewPickEm_RadioButtonAway_" + i).Checked;
        if (!HomeTeamVerif & !AwayTeamVerif)
        {
            visible = true;         
        }
    }
}

:
:
:

ASPX 文件:

<asp:ListView ID="ListViewPickEm" runat="server">
<AlternatingItemTemplate>
    <tr style="color: white; background-color: forestgreen; border: groove; width: 100%;">
        <td style="float:left;">
            <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
        </td>
            <asp:HiddenField ID="GameID" Value=<%# Eval("GameID") %> runat="server" />
         <td>
            <asp:Label ID="HomeTeamNameLabel" runat="server" Text='<%# Eval("HomeTeamName") %>'  />
         </td>
         <td>
            <asp:HiddenField ID="HomeID" Value=<%# Eval("HomeTeamID") %> runat="server" />
            <asp:RadioButton ID="RadioButtonHome" Checked="false" runat="server" GroupName="GameChoice" />
         </td>
         <td>
            <asp:Label ID="AwayTeamNameLabel" runat="server" Text='<%# Eval("AwayTeamName") %>' />
         </td>
         <td>
            <asp:HiddenField ID="AwayID" Value=<%# Eval("AwayTeamID") %> runat="server" />
            <asp:RadioButton ID="RadioButtonAway" Checked="false" runat="server" GroupName="GameChoice" />
         </td>
     </tr>
 </AlternatingItemTemplate>
 <EmptyDataTemplate>
     <table id="Table1" runat="server" style="">
         <tr>
             <td>No data was returned.</td>
         </tr>
     </table>
 </EmptyDataTemplate>
 <ItemTemplate>
     <tr style="color: white; background-color: darkgreen; border: groove; width:100%;">
         <td style="float:left;">
             <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
         </td>
             <asp:HiddenField ID="GameID" Value=<%# Eval("GameID") %> runat="server" />
         <td>
             <asp:Label ID="HomeTeamNameLabel" runat="server" Text='<%# Eval("HomeTeamName") %>' />
         </td>
         <td>
             <asp:HiddenField ID="HomeID" Value=<%# Eval("HomeTeamID") %> runat="server" />
             <asp:RadioButton ID="RadioButtonHome" Checked="false" runat="server" GroupName="GameChoice" />
         </td>
         <td>
             <asp:Label ID="AwayTeamNameLabel" runat="server" Text='<%# Eval("AwayTeamName") %>' />
         </td>
         <td>
             <asp:HiddenField ID="AwayID" Value=<%# Eval("AwayTeamID") %> runat="server" />
             <asp:RadioButton ID="RadioButtonAway" Checked="false" runat="server" GroupName="GameChoice" />
         </td>
     </tr>
 </ItemTemplate>
 <LayoutTemplate>
     <table id="Table2" runat="server">
         <tr>
             <td id="Td1" runat="server">
                 <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                     <tr id="Tr1" runat="server">
                         <th id="Th1" runat="server">Date</th>
                         <th style="float: right;" id="Th2" runat="server">Home Team</th>
                         <th id="Th3" runat="server"></th>
                         <th style="float:right;" id="Th4" runat="server">Away Team</th>
                         <th id="Th5" runat="server"></th>
                     </tr>
                     <tr id="itemPlaceholder" runat="server">
                     </tr>
                 </table>
             </td>
         </tr>
         <tr id="Tr2" runat="server">
             <td id="Td2" runat="server" style=""></td>
         </tr>
     </table>
 </LayoutTemplate>
 <SelectedItemTemplate>
     <tr>
         <td style="float:left;">
             <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
         </td>
             <asp:HiddenField ID="GameID" Value=<%# Eval("GameID") %> runat="server" />
         <td>
             <asp:Label ID="HomeTeamNameLabel" runat="server" Text='<%# Eval("HomeTeamName") %>' />
         </td>
         <td>
             <asp:HiddenField ID="HomeIDvalue" Value=<%# Eval("HomeTeamID") %> runat="server" />
             <asp:RadioButton ID="RadioButtonHome" Checked="false" runat="server"  />
         </td>
         <td>
             <asp:Label ID="AwayTeamNameLabel" runat="server" Text='<%# Eval("AwayTeamName") %>' />
         </td>
         <td>
             <asp:HiddenField ID="AwayIDvalue" Value=<%# Eval("AwayTeamID") %> runat="server" />
                 <asp:RadioButton ID="RadioButtonAway" Checked="false" runat="server" />
         </td>
     </tr>
 </SelectedItemTemplate>
 </asp:ListView>

c#文件:

protected void onPickEmSubmit(object sender, EventArgs e)
{
    //        Will ensure deadline time has not passed
    string dateTime = "08/25/2016 13:00:00.00";
    DateTime CutoffDate = Convert.ToDateTime(dateTime);
    DateTime localDate = DateTime.Now;
    if (localDate > CutoffDate)
    {
        // if deadline has passed, will send error message
        Overdue.Visible = true;
    }
    else 
    {
        //        Will ensure all games were picked
        //            else send an error message back
        Boolean visible = false;
        ScriptManager.RegisterStartupScript((Page)this, base.GetType(), "AllPickEmGamesSelected" + DateTime.Now,
                                                     string.Format("AllPickEmGamesSelected('{0}');", visible), true);
        NotAllPicked.Visible = visible;
    }
}

【问题讨论】:

  • C 和 C# 是不同的语言,有不同的标签。请添加标签 C# 并删除 C 标签。无论如何,如果你有正确的标签,你更有可能吸引有知识的人来回答你的问题。 :-)
  • 谢谢。无意的错字,但有价值的收获。

标签: javascript c# asp.net radio-button


【解决方案1】:

您解决此问题的方法只是一个小错字。由于 JavaScript 是区分大小写的语言,因此您需要将 Checked 更改为 checked。所以,你最终的 JS 代码将是:

    function AllPickEmGamesSelected(visible)
{
    var i;
    for (i=0; i<16; i++) 
    {
        var HomeTeamVerif = document.getElementById("FeaturedContent_ListViewPickEm_RadioButtonHome_" + i).checked;
        var AwayTeamVerif = document.getElementById("FeaturedContent_ListViewPickEm_RadioButtonAway_" + i).checked;
        if (!HomeTeamVerif & !AwayTeamVerif)
        {
            visible = true;         
        }
    }
}

抱歉,我没有检查此代码。 ;)

【讨论】:

  • 这让我走得更远,因为我发现值从未定义变为假。现在,问题是实际上单击了其中一个按钮。因此,我试图确定单击提交按钮时值是否实际发生了变化。那段代码就在前面的aspx代码下面,如下:
  • @MDDeVane 你可以通过谷歌快速搜索找到这个。好像你想提交一个表单,所以你应该搜索“自定义表单验证 html”。我对aspx了解不多,所以我已经尽我所能引导你找到答案。 :) 祝你好运!
猜你喜欢
  • 2015-10-31
  • 1970-01-01
  • 2012-07-10
  • 2016-09-26
  • 2012-02-16
  • 2011-01-12
  • 2010-11-13
  • 2012-03-07
相关资源
最近更新 更多