1

我在中继器中有一个链接按钮,如下所示:

<asp:LinkButton ID="lnkDelete" runat="server" CommandName="delete" OnClientClick='javascript:return showConfirm("Are you sure you want to delete?")'
                                    CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ReasonId") %>'>Delete</asp:LinkButton>

当用户单击删除时,我使用jQuery noty 插件显示确认。

showConfirm()函数是这样的:

function showConfirm(message) {
    var n = noty({
        text: message, //'Are you sure?',
        type: 'confirm',
        dismissQueue: false,
        layout: 'center',
        theme: 'defaultTheme'
        , buttons:
            [{
                addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) {
                    $noty.close(); return true;
                }
            },
            {
                addClass: 'btn btn-danger', text: 'Cancel', onClick: function ($noty) {
                    $noty.close(); return false
                }
            }]
    })

}

但它不会返回truefalse。我如何返回truefalse单击okcancel按钮时。?

4

5 回答 5

1

与第一个答案类似,但对延迟的管理略有不同,这对我来说更直观。

function showConfirm(msg) {
        var self = this;
        self.dfd = $.Deferred();
        var n = noty({
            text: msg,
            type: 'confirm',
            dismissQueue: false,
            layout: 'center',
            theme: 'defaultTheme'
            , modal: true
            , buttons:
                [{
                    addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) {                            
                        $noty.close();
                        self.dfd.resolve(true);
                    }
                },
                {
                    addClass: 'btn btn-danger', text: 'Cancel', onClick: function ($noty) {
                        $noty.close();
                        self.dfd.resolve(false);
                    }
                }]
        })

        return self.dfd.promise();
    }

然后我们可以使用...

showConfirm("Confirm your action?").then(function (status) {
            // status is true or false
        });
于 2016-10-19T14:21:03.440 回答
0

这是我为 noty 写的几个有用的小函数。这个版本期望使用 animate.css 库和基础框架,但是只要将按钮 css 类替换为引导程序类,它就可以与引导程序一起使用。请记住,此函数旨在与全局命名空间函数一起使用,因为它们在技术上只是窗口对象的方法。如果您需要使用自定义对象的功能,请将窗口更改为您的对象的名称,其中显示“这里是魔法发生的地方”

//shows a noty alert message. _m is the message to display, _t is the type(error etc)
function alertHandle(_m,_t){
    noty({
        text: _m,
        type:_t,
        layout:'topCenter',
        animation: {
        open: 'animated pulse',
        close: 'animated flipOutX',
    }
    });
}

//noty confirm dialogue with callback function.
/*
_text = text of message to display 
confirmCB = callback function to call if user clicks continue.
args = args to pass to callback function . could be whatever you want it to be.
*/
function confirmModal(_text,confirmCB,args){
    noty({
        text: _text,
        layout: 'center',
        buttons: [
            {addClass: 'button success tiny radius no-margin', text: 'Continue', onClick: function($noty) {
                    $noty.close();
                    window[confirmCB].call(false,args); // heres where the magic happens.
                }
            },
            {addClass: 'button alert tiny radius no-margin', text: 'Cancel', onClick: function($noty) {
                    $noty.close();
                    alertHandle('the action was cancelled','information');
                }
            }
        ]
    });
}
于 2015-04-24T17:45:20.833 回答
0

使用 Jquery $.Deferred。

var status = false;
var defer = new $.deferred();
defer.progress(function(status) {
  status = status;
  if ( status != undefined ) {
    defer.resolver();
    if ( !status ) {
      return false;
    } else {
      return true;
    }
  }
});
var confirm = showConfirm("Are you sure you want to delete?", defer);

和..通知功能

function showConfirm(message, defer) {
var _self = this;
var status = undefined;
var n = noty({
    text: message, //'Are you sure?',
    type: 'confirm',
    dismissQueue: false,
    layout: 'center',
    theme: 'defaultTheme'
    , modal: true
    , buttons:
        [{
            addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) {
                _self.status = true;
                $noty.close();
                // return true;
                defer.notify(_self.status);
            }
        },
        {
            addClass: 'btn btn-danger', text: 'Cancel', onClick: function ($noty) {

                $noty.close();
                // return false
                defer.notify(_self.status);
            }
        }]
    })
}

结尾;

于 2015-02-06T00:02:44.050 回答
0

您不能返回truefalse 按您希望的方式返回,因为实际上这不是一个“真正的模态对话框”,它使浏览器或任何其他窗口等待返回。

使用 javascript 可以做到这一点的唯一浏览器对话框是confirm对话框。

您使用的dialog实际上是在您的页面上打开并显示一条消息的 div,无法从您的输入控件中保留帖子。或者,您可以将其设计为打开,在“是”的情况下,重定向到您希望的页面,但调用它的链接只能打开它。

于 2014-06-25T09:16:37.040 回答
0
function deleteFinance(ItemID, btn) {
            noty({
                text: 'are you sure of delete Item?', buttons: [{
                    addClass: 'btn btn-primary', text: 'yes',
                    onClick: function ($noty) {
                        $noty.close();
                        deleteFinance2(ItemID, btn);
                    }
                }, {
                    addClass: 'btn btn-danger', text: 'Cancel',
                    onClick: function ($noty) {
                        $noty.close();
                    }
                }]
               , layout: 'center'
            });
        }
于 2016-07-12T09:08:26.880 回答