//ddl.Attributes.Add("onchange", "javascript:return confirm('你确定要改变分组吗?');");
用onchange的时候点击“取消”虽然不会触发服务器事件,但选择的项确实是改变了,理论上点取消应该是回到最初的状态(没改变选项以前),但现在却是改变后的值ddl.Attributes.Add("onclick", "javascript:return confirm('你确定要改变分组吗?');");
用onclick的话只要点击就会警告,点“确定”,去改变选项时,又会触发onclick成了个列循环
大家可以简单的在自己机器上试下。
不知道能不能解决这个问题,JS不是太好。
在线=

解决方案 »

  1.   

    onchange是在变化了之后才触发的,弹出之前已经变了。
    你可以使用一个中间变量纪录上次的选择
      

  2.   

    //ddl.Attributes.Add("onchange", "javascript:return confirm('你确定要改变分组吗?');");
    用onchange的时候点击“取消”虽然不会触发服务器事件,但选择的项确实是改变了,理论上点取消应该是回到最初的状态(没改变选项以前),但现在却是改变后的值=========
    onchange 事件是在选择项改变之后触发的!!!!此时值已经改变了!!!!
      

  3.   

    ddl.Attributes.Add("onchange", "return Select();");
    <script>
    var index=form1.ddl.selectedIndex;
    function select()
    {
    if(confirm('你确定要改变分组吗?'))
    {
    return true;
    }
    else
    {
    form1.ddl.selectedIndex=index;
    return false;
    }
    }
    </script>
      

  4.   

    写个函数,confirm返回false的时候重置一下值?
      

  5.   

    如果存在中间变量中,肯定要判断if(confirm()){}else{}...这样如何触发服务器事件呢
      

  6.   

    现在我的DDL是放在GridView中的……zhenjiaobing(迷茫的人生)方法可行,但在GV中不知道中怎么写
      

  7.   

    JS部分
    <script type="text/javascript" language="javascript">
        var DropSelectdIndex;
        function SaveValue()
        {
            var oEl = event.srcElement;
            DropSelectdIndex = oEl.selectedIndex;
        }
        function TabValue()
        {
            var oEl = event.srcElement;
            if (!confirm('确认要更改?'))
                oEl.selectedIndex = DropSelectdIndex;
        }
        </script>Html部分 <asp:DropDownList ID="DropDownList1" runat="server">
                <asp:ListItem>1</asp:ListItem>
                <asp:ListItem>2</asp:ListItem>
                <asp:ListItem>3</asp:ListItem>
                <asp:ListItem>4</asp:ListItem>
            </asp:DropDownList>CS部分
            this.DropDownList1.Attributes.Add("onclick", "SaveValue()");
            this.DropDownList1.Attributes.Add("onchange", "TabValue()");这样就能解决你的问题了
      

  8.   

    ddl.Attributes.Add("onchange", "return Select();");
    <script>
    var index=form1.ddl.selectedIndex;
    function select()
    {
    if(confirm('你确定要改变分组吗?'))
    {
    index=form1.ddl.selectedIndex  //这句应该加上
    return true;
    }
    else
    {
    form1.ddl.selectedIndex=index;
    return false;
    }
    }
    </script>
      

  9.   

    问题解决
    HTML
    var DropSelectdIndex;
                function SaveValue(ddlid)
                {
                    DropSelectdIndex = document.getElementById(ddlid).selectedIndex;
                }
                function TabValue(ddlid)
                {               
                    if (!confirm('确认要更改分组?'))
                        document.getElementById(ddlid).selectedIndex = DropSelectdIndex;
                }
    C#
    DropDownList ddl = (DropDownList)gvr.FindControl("ddlFriendTypeInGv");
                ddl.Attributes.Add("onchange", "javascript:TabValue('" + ddl.ClientID + "');");
                ddl.Attributes.Add("onclick", "javascript:SaveValue('" + ddl.ClientID + "');");
      

  10.   

    如果研究过自定义服务器控件的人就会有所了解,onchange事件需要实现的接口是IPostBackDataHandler,而onclick要实现的接口是IPostBackEventHandler.onchange事件在某个控件的值改变并失去焦点之后就立即触发了,所以你的那个DDL列表的值改变了.