【问题标题】:Always return true when click on button when use jquery dialog使用 jquery 对话框时单击按钮时始终返回 true
【发布时间】:2023-03-19 09:31:01
【问题描述】:

我正在使用 jquery 对话框。当我点击按钮弹出是打开的,但它返回 true 并执行按钮的服务器端事件。

我想当用户点击yes然后返回true,否则返回false。

    function btnCancelClick()
            {
                $("#dialog:ui-dialog").dialog("destroy");

                $("#dialog-confirm").dialog({
                    resizable: false,
                    height: 140,
                    width: 400,
                    modal: true,
                    buttons: {
                        "Yes": function ()
                        {                       
                            $(this).dialog("close");
                                  return true;
                        },
                        No: function ()
                        {                       
                            $(this).dialog("close");
                                return false;
                        }
                    }

                });             
            }

    <asp:Button ID="btnCancel" runat="server" Text="Cancel Appointment" CssClass="cssbutton"
                                    OnClientClick="return btnCancelClick();" OnClick="btnCancel_Click" />

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    不能通过对话return

    你必须使用回调函数。

    $("#dialog-confirm").dialog({
        resizable: false,
        height: 140,
        width: 400,
        modal: true,
        buttons: {
            Yes: function() {
                $(this).dialog("close");
                clickedYes(); //YES CALLBACK
            },
            No: function() {
                $(this).dialog("close");
                clickedNo(); //NO CALLBACK
            }
        }
    });
    

    【讨论】:

    • clickedYes(); clickedNo(); javascript中根本没有定义
    • 我应该分别为这两种方法写 return true 和 return false 还是什么???
    • 那么请详细说明你的 clickedYes clickedNo 方法
    • @John 制作当用户点击“是”或“否”时将调用的函数
    • 更准确地说,dialog 方法返回立即(在创建对话框并使其可见之后);当您的 yes/no 回调运行时,您已经已经向 onclick 处理程序返回了一个值,所以“返回任何内容;”在回调中不会做你想的。如果您想要取消确认,那么您需要在对话框中单击相应按钮时运行取消确认功能,而不是依赖取消按钮的 onclick 或其他任何操作。
    【解决方案2】:

    更新您的 btnCancelClick 方法以始终返回 false。然后在对话框按钮处理程序中,不要返回 true 或 false,而是在此处进行回发。

    function btnCancelClick() {
        $("#dialog:ui-dialog").dialog("destroy");
    
        $("#dialog-confirm").dialog({
            resizable: false,
            height: 140,
            width: 400,
            modal: true,
            buttons: {
                "Yes": function () {
                    $(this).dialog("close");
                    <%=ClientScript.GetPostBackEventReference(btnCancel, "")%>;
                },
                No: function () {
                    $(this).dialog("close");
                }
            }
        });
        return false;
    }
    

    这一行:

    &lt;%=ClientScript.GetPostBackEventReference(btnCancel, "")%&gt;

    会将 javascript 回发调用注册到您的 btnCancelClick 方法中。

    【讨论】:

    • 这是一个带有 javascript 警报的小提琴,其中 ASP.NET 回发将转到:jsfiddle.net/GZFyz/1
    • 你在函数末尾添加 return false 它总是返回 false 不回发
    • 添加时 ;产生错误
    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多