javascript - 带有 bool 值返回的 jQuery UI 对话框 - true 或 false

标签 javascript jquery user-interface dialog

我正在尝试替换 javascript confirm()。我找到了可以完全自定义的 jquery dialog() 函数。问题是我无法让它返回 truefalse

这是我的代码:

$('#delBox').dialog(
        { autoOpen: false, resizable: false, modal: true, closeOnEscape: true, width: 300, height: 'auto', title: 'Deletar registro',
            buttons: {
                "Ok": function () {
                    return true;
                }, "Cancelar": function () {
                    $(this).dialog("close");
                    return false;
                }
            },
            open: function () {
                var buttonsSet = $('.ui-dialog-buttonset').find("button:contains('Ok')");
                buttonsSet.attr("class", "ui-button ui-state-default");
                $('.ui-dialog-titlebar-close span').empty();
                $('.ui-dialog-buttonset').find("button:contains('Ok')").button({
                    text: false,
                    icons: {
                        primary: 'ui-icon-ok'
                    }
                });

                $('.ui-dialog-buttonset').find("button:contains('Cancelar')").button({
                    text: false, 
                    icons: {
                        primary: 'ui-icon-cancel'
                    }
                });
            }
        });

这只会在选择任何选项之前返回一个对象:

function deletar() {
     alert($('#delBox').dialog('open'));
}

最佳答案

jQueryUI 对话框不能返回 truefalse,因为它们显示在其他内容之上但没有阻止执行。

你能做的最好的事情是:

  1. 将框设置为模态,以便它隐藏其他内容

  2. 根据选择的选项提供要使用的回调。

对于额外的奖励积分,您可以创建一个 $.Deferred() promise 对象并在显示对话框时返回它。然后,您可以在按钮事件处理程序中resolvereject 该 promise 。

这将使您清楚地区分显示对话框和执行随后由它触发的操作:

function showDialog() {
   var def = $.Deferred();

   // create and/or show the dialog box here
   // but in "OK" do 'def.resolve()'
   // and in "cancel" do 'def.reject()'

   return def.promise();
}

showDialog().done(function() {
    // they pressed OK
}).fail(function() {
    // the pressed Cancel
});

// NB: execution will continue here immediately - you shouldn't do
//     anything else now - any subsequent operations need to be
//     started in the above callbacks.

关于javascript - 带有 bool 值返回的 jQuery UI 对话框 - true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703071/

相关文章:

javascript - 使用 jQuery 调整表列大小

c# - 在 BAL 类逻辑方面需要帮助

javascript - 如何将输入值数组发送到 Controller

javascript - 使用javascript选中复选框时播放音频

javascript - Jquery On Click 方法不适用于新添加的 Div

javascript - 向左或向右滚动时在固定表上有垂直滚动但没有水平滚动

javascript - javascript中类的单个实例

javascript - 在 Node.js 的回调中影响对象的属性

user-interface - 比较可以掩盖差异的工具?

java - 如何将事件监听器与 "asking"结合起来进行事件?