jQuery UI对话框框的返回值

4

您可能会在许多帖子中找到有关此问题的解决方案(帖子1帖子2),但是他们的解决方案对我不起作用。

以下是我编写的普通jquery对话框:

$("#dialog").dialog({
        autoOpen:false,
        buttons:{
            "ok":function(){                                        
                        $(this).dialog("close"); 
                        return true;                                                                    
                    },
            "cancel":function(){                          
                        $(this).dialog("close");     return false;                  
                }
            }   
});

我将使用以下代码打开对话框:

var returnVal=$("#dialog").dialog("open");

如果用户点击“取消”,则需要返回false,如果用户点击“确定”,则需要返回true

var returnVal=$("#dialog").dialog("open");

我希望returnVal返回布尔值(true/false),但它返回了javascript的object对象。

2个回答

8

由于OK /取消函数本质上是仅在单击按钮时才处理的事件处理程序,因此无法从中返回任何内容。

请使用一个单独的函数来处理结果:

$mydialog = $("#dialog").dialog({
    autoOpen: false,
    buttons: {
        "ok": function() {
            $(this).dialog("close");
            processResult(true);
        },
        "cancel": function() {
            $(this).dialog("close");
            processResult(false);
        }
    }
});

$mydialog.dialog("open");


function processResult(result) {
    alert(result);
}

示例代码 : http://jsfiddle.net/nz2dH/


1
抱歉ManseUK(我想用非常感谢来接受它!),但是等等...我正在我的页面上处理它...我只是在这里向您提供了一些代码。我无法在提交表单时传播“result”。 - Umesh Patil
@Umesh 我希望你能阅读那个页面并接受其他答案,而不是针对这个问题... 你能否创建一个 http://jsfiddle.net/ 来展示你的问题? - Manse
当然,ManseUK。这需要一些时间。你能等我吗? - Umesh Patil

5
我已经实现了一个带有自定义消息和回调函数的Yes/No确认对话框,就像这样。如果你想要为不同的目的使用相同的对话框,这将非常有用。
<script type="text/javascript">
    // prepare dialog
    $(function () {
        $("#confirm-message-dialog").dialog({
            autoOpen: false,
            modal: true,
            closeOnEscape: false,
            buttons: {
                Yes: function () {
                    $(this).dialog("close");
                    $(this).data("callback")(true);
                },
                No: function () {
                    $(this).dialog("close");
                    $(this).data("callback")(false);
                }
            }
        });
    });

    // open dialog with message and callback function
    function confirmMessageDialog (message, callback) {
        $('#confirm-message-dialog-message').text(message);
        $('#confirm-message-dialog').data("callback", callback).dialog("open");
    };
</script>

<!-- The dialog content -->
<div id="confirm-message-dialog" title="Warning"> 
    <p id="confirm-message-dialog-message"></p>
</div>

希望这也能帮到其他人 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接