我在转发器中有一个链接按钮,如下所示:
<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
}
}]
})
}
但它不会返回true
或false
。点击true
或false
按钮后如何返回ok
或cancel
。
答案 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)
您无法按照自己希望的方式返回true
或false
,因为实际上这不是“真实模态对话框”浏览器或等待返回的任何其他窗口。
唯一可以使用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'
});
}