0

我们在我们的 asp.net 项目中使用 YUI 库。我有一个 asp.net autopostback 下拉列表,它被转换为 YUI 下拉列表,如下所示。现在,当用户从下拉列表中选择某个值时,页面会发回并且 SelectedGroupChanged 事件会触发,但在此之前不会出现确认对话框。我在这里做错了什么?

代码:

    <asp:Button id="Groups" Enabled="false" runat="server" />
<asp:DropDownList ID="groupsDropDownList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="SelectedGroupChanged" />

<script language="javascript" type="text/javascript">

var YUIGroupsDrpDown;

<%if (Groups.Visible)

{ %>
    YUIGroupsDrpDown = new YAHOO.widget.Button("<%=Groups.ClientID %>",{type:"menu", menu: "<%=groupsDropDownList.ClientID %>"});
    YUIGroupsDrpDown.set("label", "<%=groupsDropDownList.SelectedItem.Text%>" );
    YUIGroupsDrpDown.getMenu().subscribe("click",onGroupsChange);
    YUIGroupsDrpDown.on("click", {fn: TakeActions, obj: 'M'});
<%} %>

function onGroupsChange()
{

   YUIGroupsDrpDown.set("label", YUIGroupsDrpDown.getMenu().activeItem.srcElement.text );

}


function TakeActions(event, action)

{
    var message = 'some message'
        if (window.confirm(strMsg) != 1)
            return false;
        else
            return true;

}

4

1 回答 1

0

最后我找到了答案。实际上,YUI 正在将自己的提交事件连接到自动回发下拉列表的表单。因此,如果用户选择取消他的操作,我们需要阻止这些 YUI 事件。所以要做到这一点,这是我从 YUI 的示例页面获得的代码:

var onExampleSubmit = function(p_oEvent) {

            var bSubmit = 
                    window.confirm("Are you sure you want to submit?")

            if(!bSubmit) {
                YAHOO.util.Event.preventDefault(p_oEvent);
            }

        };

        YAHOO.util.Event.on(pageForm, "submit", onExampleSubmit);

希望这将帮助任何在 asp.net 中使用带有客户端确认消息的自动回发下拉列表的人。

于 2009-06-22T12:16:01.953 回答