none
用javascript 改变radiobutton 的disable 状态的两个问题? RRS feed

答案

  • 你应当注意
      protected void Page_Load(object sender, EventArgs e)
      {
        RadioButton1.Attributes.Add("onclick", "function1('" + RadioButton4.ClientID + "','" + RadioButton3.ClientID + "',true)");
        RadioButton2.Attributes.Add("onclick", "function1('" + RadioButton4.ClientID + "','" + RadioButton3.ClientID + "',true)");
      }
    孟宪会
    2009年2月23日 13:36
    版主

全部回复

  • 你应当注意
      protected void Page_Load(object sender, EventArgs e)
      {
        RadioButton1.Attributes.Add("onclick", "function1('" + RadioButton4.ClientID + "','" + RadioButton3.ClientID + "',true)");
        RadioButton2.Attributes.Add("onclick", "function1('" + RadioButton4.ClientID + "','" + RadioButton3.ClientID + "',true)");
      }
    孟宪会
    2009年2月23日 13:36
    版主
  • 或者采用RadioButtonList,因为radio不分组,则不能取消点击了,

    <%@ Page Language="C#" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

      protected void Page_Load(object sender, EventArgs e)
      {
        for (int i = 0; i < RadioButtonList1.Items.Count; i++)
        {
          RadioButtonList1.Items[i].Attributes.Add("onclick", "function1('" + RadioButton4.ClientID + "','" + RadioButton3.ClientID + "',true)");
        }

      }
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
      <title>Untitled Page</title>

      <script language="javascript" type="text/javascript">
        function function1(radio1, radio2, status) {
          var radiobutton1 = document.getElementById(radio1);
          radiobutton1.disabled = status;
          var radiobutton2 = document.getElementById(radio2);
          radiobutton2.disabled = status;
        }
      </script>

    </head>
    <body>
      <form id="form1" runat="server">
      <div>
        <table>
          <tr>
            <td>
            <asp:RadioButtonList ID="RadioButtonList1" runat="server">
              <asp:ListItem>1</asp:ListItem>
              <asp:ListItem>2</asp:ListItem>
            </asp:RadioButtonList>
            </td>
          </tr>
          <tr>
            <td>
            <asp:RadioButton ID="RadioButton4" runat="server" />
            <asp:RadioButton ID="RadioButton3" runat="server" />
            </td>
          </tr>
        </table>
      </div>
      </form>
    </body>
    </html>


    孟宪会
    2009年2月23日 13:40
    版主
  •  我直接在aspx 页面 的radiobutton 里增加一个属性onclick 和在page_load 中作用应该都是一样的。
    可能是我没有说清楚,我的问题是:

    (1):我想直接将RadioButton3 和RadioButton4 的ClientID  传到function1() 中,但debug 的时候发现传的是“<%=RadioButton3.ClientID%>”这个表达式,而不是“<%=RadioButton3.ClientID%>” 计算后的结果,如何做到将“<%=RadioButton3.ClientID%>”传到function1() 中,因为所有的javascript 都要定义在javascript 文件中,而不能直接在aspx 页面中写。

    (2)

    无论status 的值是"false" 还是"true",radiobutton3 和radiobutton4 的disable状态都是false.
    除非这样写:
    if(status=="false")
    {
     radiobutton1.disabled =false;
    }
    else
    {
    radiobutton1.disabled =true;
    }

    也就是说: 如果直接写成radiobutton1.disabled =status; 无论status 是true 或false, radiobutton1 都是disable.
    请问这是什么原因?




    2009年2月24日 2:38
  • if(status=="false")
    {
     
    radiobutton1.disabled =''; 
    }
    else
    {
    radiobutton1.disabled ='disabled'; //  true 应该写成 disabled
    }
    2009年2月24日 2:55
    版主
  • 楼主,你好
    一般来说像你这样直接在html代码中写onclick是没有问题的,不过在你这种情况下我建议还是按照老孟建议的那样注册客户端事件。
    我想之所以你的<%=RadioButton3.ClientID%>始终不是控件的客户端Id可能与服务器的解析有关,所以你最好不要这样。

    然后我按照老孟的那样注册客户端事件后一切正常。没有你说的status的问题,所以我标记老孟的post为答案了。


    Microsoft Online Community Support
    2009年2月24日 8:32