如何从jQuery noty确认对话框返回true或false

时间:2014-06-25 09:12:15

标签: jquery asp.net noty

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

<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 plugin在用户点击删除时显示确认信息。

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

5 个答案:

答案 0 :(得分: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
        });

答案 1 :(得分:0)

您无法按照自己希望的方式返回truefalse ,因为实际上这不是“真实模态对话框”浏览器或等待返回的任何其他窗口。

唯一可以使用javascript执行此操作的浏览器对话框是confirm对话框。

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

答案 2 :(得分: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);

和.. noty功能

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);
            }
        }]
    })
}

端;

答案 3 :(得分:0)

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

//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');
                }
            }
        ]
    });
}

答案 4 :(得分: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'
            });
        }