<asp:RadioButtonList ID="rdo" runat="server" RepeatDirection="Horizontal" AutoPostBack="true"  onclick="chk();">
        <asp:ListItem Text="1" Value="1"></asp:ListItem>
        <asp:ListItem Text="2" Value="2"></asp:ListItem>
</asp:RadioButtonList>            <script type="text/javascript">                function chk() {
                    return false;
                }
            </script>我有一个事件rdo1_SelectedIndexChanged服务器端事件,同时客户端有个js事件,如果用户对radiobuttonlist选择发生变化,我要判断他的其他输入是否合法,如果不合法,则取消服务器回调,但是现在有个问题,及时我在onclick事件直接return false,仍然会触发服务器端page_onload事件。有什么办法能取消服务器回调?谢谢

解决方案 »

  1.   

    搞这么复杂干嘛
    直接用ajax实现
    JS如果通过验证,就调用ajax方法。
    再说,radioButtonList这个有输入吗?数据都是你设定的,还要验证什么?
      

  2.   

    可以用ajax实现:http://msdn.microsoft.com/zh-cn/magazine/cc163380.aspx
      

  3.   

    <asp:RadioButtonList ID="rdo" runat="server" RepeatDirection="Horizontal" AutoPostBack="true" onclick ="return chk()">或者onmousedown="return chk()"
      

  4.   

    子项的onclick事件要优先于父项
      

  5.   

    用CustomValidator, 设置ClientValidationFunction=“chk”
      

  6.   


    this.rdo.Attributes.Add("onclick","chk()");
      

  7.   


    然后再 chk()
    {
     if(不合法)
    {
      return false;
    }
    }
      

  8.   

    <asp:RadioButtonList ID="rdo" runat="server" RepeatDirection="Horizontal" AutoPostBack="true" OnClientClick="chk();">
      <asp:ListItem Text="1" Value="1"></asp:ListItem>
      <asp:ListItem Text="2" Value="2"></asp:ListItem>
    </asp:RadioButtonList>
      

  9.   

    onclick=“return chk()”
    chk返回true,执行后台的indexChanged
      

  10.   

    必须设AutoPostBack="false“,否则该控件始终会调用page_onload事件
    我现在只能用笨办法,我设AutoPostBack="false“,然后用js判,满足条件后调用一个隐藏button的click事件传server