【问题标题】:Stop enabling Radiobutton after button click?单击按钮后停止启用单选按钮?
【发布时间】:2012-12-06 09:01:39
【问题描述】:

如果选择了 4 个属性列表中的 2 个选项之一,我的项目中有单选按钮应该被禁用。这是我的代码:

<asp:DropDownList ID="drpLType" runat="server" CssClass="drp">
 <asp:ListItem Value="0" Selected="True">Professional</asp:ListItem>
 <asp:ListItem Value="1">Enterprise</asp:ListItem>
 <asp:ListItem Value="2">Maintanence</asp:ListItem>
 <asp:ListItem Value="3">Reporting</asp:ListItem>
</asp:DropDownList>

我为此使用了 javascript:

function funMeapSupportValidate(val)
{
  switch(val)
    {
        case "0" :                             
            document.getElementById('<%=this.rdoMeapSupport.ClientID%>').disabled = false; 
            break;
        case "1" :
            document.getElementById('<%=this.rdoMeapSupport.ClientID%>').disabled = false; 
            break;                
        case  "2" :
            document.getElementById('<%=this.rdoMeapSupport.ClientID%>').check = false;   
            document.getElementById('<%=this.rdoMeapSupport.ClientID%>').disabled = true; 
            break;                
        case  "3" :
            document.getElementById('<%=this.rdoMeapSupport.ClientID%>').check = false;   
             document.getElementById('<%=this.rdoMeapSupport.ClientID%>').disabled = true; 
            break;                
        default:
            break;
    }
}

在我的后端代码:

protected void drpLType_SelectedIndexChanged(object sender, EventArgs e)
{
    if (drpLType.SelectedValue == "Professional")
    {
        rdoMeapSupport.Enabled = true;
    }

    if (drpLType.SelectedValue == "Enterprise")
    {
        rdoMeapSupport.SelectedValue = null;
        rdoMeapSupport.Enabled = true;
    }

    if ((drpLType.SelectedValue == "Maintanence") || (drpLType.SelectedValue == "Reporting"))
    {
        rdoMeapSupport.Enabled = false;
        rdoMeapSupport.ClearSelection();
    }

}

现在的问题是我的网站上有两个按钮。每当我单击这些按钮时,即使我选择了 MaintenanceReporting ,单选按钮也会被激活。如何禁用它?

在我的页面加载:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Tab1.CssClass = "Clicked";
        MainView.ActiveViewIndex = 0;

        if (drpLType.SelectedValue == "Professional")
        {
            rdoMeapSupport.Enabled = true;
            rdoMeapSupport.SelectedValue = "Yes";
        }

        drpLType_SelectedIndexChanged();
    }

    drpLType.Attributes.Add("onchange", "javascript:funMeapSupportValidate(this.value);");
}

【问题讨论】:

  • 您有没有想过在页面回发中drpLType_SelectedIndexChanged 事件不会触发?
  • 所以我应该在页面加载时调用该函数吗?
  • 您的 asp.net 代码中似乎没有关联该事件 - 您是在代码隐藏中设置它还是只是忘记关联它?
  • 我在页面加载时调用 js。但仍然没有发生任何事情。
  • 你在使用任何 ajax 更新面板吗?您正在将页面加载时的 onchange 事件附加到下拉列表,您应该直接调用函数或再次调用 selectedindex 更改事件中的 C# 代码。使用 jquery document.ready。

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


【解决方案1】:

我用过这个

<INPUT type="radio" name="myButton" value="theValue"
onclick="this.checked=false;
alert('Sorry, this option is not available!')">

【讨论】:

    【解决方案2】:

    我终于通过以下方式解决了错误。

    protected void drpLType_SelectedIndexChanged(object sender, EventArgs e)
    {
      if (drpLType.SelectedValue == "1")
      {
       rdoMeapSupport.Enabled = true;
      }
    
      if (drpLType.SelectedValue == "2")
      {
       rdoMeapSupport.SelectedValue = null;
       rdoMeapSupport.Enabled = true;
      }
    
      if ((drpLType.SelectedValue == "3") || (drpLType.SelectedValue == "4"))
      {
       rdoMeapSupport.Enabled = false;
       rdoMeapSupport.ClearSelection();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多