【问题标题】:How to set a radio button as default as make it hidden?如何将单选按钮设置为默认隐藏?
【发布时间】:2012-03-16 10:32:35
【问题描述】:

我完全是asp.net的新手,但由于某种原因,我必须在以下代码中进行一些更改

<TR>
                <TD STYLE="WIDTH: 25%" ALIGN="RIGHT">I am:&nbsp;</TD>
                <TD STYLE="WIDTH: 75%" ALIGN="LEFT">
                     <INPUT TYPE="RADIO"  VALUE="Buy-New-Home" NAME="STATUS" ID="STATUS_BUYER" onClick="enableSection( 'Buyer' );"<% if( Request.QueryString( "STATUS" ) == "Buy-New-Home" || Request.QueryString( "STATUS" ).Count == 0 ) Response.Write( " CHECKED" ); %>>Buying
                    <INPUT TYPE="RADIO"  VALUE="Sell-Home" NAME="STATUS" ID="STATUS_SELLER" onClick="enableSection( 'Seller' );"<% if( Request.QueryString( "STATUS" ) == "Sell-Home" ) Response.Write( " CHECKED" ); %>>Selling           ---->>
                    <INPUT TYPE="RADIO"  VALUE="Buy-Resale-Home" NAME="STATUS" ID="STATUS_BOTH" onClick="enableSection( 'Both' );"<% if( Request.QueryString( "STATUS" ) == "Buy-Resale-Home" ) Response.Write( " CHECKED" ); %>>Both
                </TD>

上面的代码怎么改成

1:默认选择“BOTH”

2:当它被隐藏时,用户不会点击它,用户将无法看到它,

3:表单会将“both”的值提交给动作脚本

(据我所知,按钮要么是隐藏的,要么是单选的,因此可能无法将其设置为单选和隐藏,)

请指导我..

【问题讨论】:

    标签: asp.net forms radio-button


    【解决方案1】:

    如果你把它放在一个隐藏的div(或span)中,那么你并没有显示它,但它仍然存在并且可以被默认选中。并且它的价值会被公布出来。

    <div style="display:none;">
    <INPUT TYPE="RADIO"  VALUE="Buy-Resale-Home" NAME="STATUS" ID="STATUS_BOTH" onClick="enableSection( 'Both' );"<% if( Request.QueryString( "STATUS" ) == "Buy-Resale-Home" ) Response.Write( " CHECKED" ); %>>Both
    </div>
    

    【讨论】:

      【解决方案2】:

      您可以使用 Javascript 和常规的 ASP 单选按钮列表来做这样的事情:

      Javascript:

      <script>
          window.onload = function () {
              var radios = document.getElementById('<%=list.ClientID%>').getElementsByTagName('input');
              for (var i = 0; i < radios.length; i++) {
                  if (radios[i].value == "Both" && '<%=Request.QueryString["Both"]=="Buy-Resale-Home" %>'.toLowerCase() == 'true') {
                      radios[i].checked = 'checked'; //select it
                      radios[i].style.display = 'none'; //hide it
                  }
                  else  //more logic for other 2 radio buttons
                  {
                  }
              }
          }
      </script>
      

      标记:

      <asp:RadioButtonList ID="list" runat="server">
          <asp:ListItem Text="Both" Value="Both"></asp:ListItem>
          <asp:ListItem Text="Selling"  Value="Selling"></asp:ListItem>
          <asp:ListItem Text="Buying"  Value="Buying"></asp:ListItem>
      </asp:RadioButtonList>
      

      您也可以在我认为比这种 javascript 方法更好的代码上执行所有操作,但这取决于您最熟悉的语言。

      【讨论】:

        【解决方案3】:

        我认为最好的方法是不要为“两者”设置单选按钮。如果它无论如何都被隐藏了,并且您永远不希望用户与之交互,那么就不要将它放在您的页面上。不要将“买方”或“卖方”设置为(最初)选中,以便默认情况下两者都不是。如果两者都没有像这样选择,这将允许您检查您的代码......

        在您的标记中:

        <asp:RadioButtonList id="StatusRadioList" CssClass="radio-buttons" RepeatLayout="Flow" runat="server">
          <asp:ListItem>Buyer</asp:ListItem>
          <asp:ListItem>Seller</asp:ListItem>
        </asp:RadioButtonList>
        

        (请注意,我正在使用 RepeatLayout="Flow" - 这告诉 asp.net 在不使用表格进行布局的情况下呈现标记 - 我认为更好)

        在您的代码隐藏文件中,您将有一个按钮单击处理程序来响应用户提交表单 - 如下所示:

        protected void OnFormSubmitClick(object sender, EventArgs e)
        {
            if (IsValid)
            {
                string status;
                if (StatusRadioList.SelectedItem == null)
                {
                    status = "Both";
                }
                else
                {
                    status = StatusRadioList.SelectedValue;
                }
        
                // The rest of your code here
                // ...
            }
        }
        

        在上面的示例中,我使用 RadioButtonList 的 SelectedValue 来获取“状态”的字符串值,但如果对您更有效,您也可以轻松使用 SelectedItem 或 SelectedIndex。

        另外,如果你想缩短代码,你可以使用三元而不是 if/else - 就像这样:

        string status = (StatusRadioList.SelectedItem == null) 
                            ? "Both" 
                            : StatusRadioList.SelectedValue;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-09
          • 2021-01-06
          • 1970-01-01
          • 2011-01-05
          • 1970-01-01
          • 1970-01-01
          • 2016-06-29
          相关资源
          最近更新 更多