Ответ 1
Ну, это может сработать.
Ваша функция диалога... showDialog()
function confirmation(question) {
var defer = $.Deferred();
$('<div></div>')
.html(question)
.dialog({
autoOpen: true,
modal: true,
title: 'Confirmation',
buttons: {
"Yes": function () {
defer.resolve("true");//this text 'true' can be anything. But for this usage, it should be true or false.
$(this).dialog("close");
},
"No": function () {
defer.resolve("false");//this text 'false' can be anything. But for this usage, it should be true or false.
$(this).dialog("close");
}
},
close: function () {
$(this).remove();
}
});
return defer.promise();
}
а затем код, в котором вы используете функцию...
function onclick(){
var question = "Do you want to start a war?";
confirmation(question).then(function (answer) {
var ansbool = Boolean.parse(answer.toString());
if(ansbool){
alert("this is obviously " + ansbool);//TRUE
} else {
alert("and then there is " + ansbool);//FALSE
}
});
}
Это может показаться неправильным для большинства людей. Но всегда есть ситуации, когда вы просто не можете вернуться из JQuery Dialog.
Это будет в основном имитировать функцию confirm(). Но с уродливым кодом и приятным подтверждением выглядят окна:)
Надеюсь, это поможет некоторым людям.
<ч/" >
EDIT: решение Bootstrap 3
Теперь я использую библиотеку начальной загрузки NakuPanda, она работает очень хорошо. В основном то же, что и с JQueryUI, но в пользовательском интерфейсе Bootstrap.
function bsConfirm(question) {
var defer = $.Deferred();
BootstrapDialog.show({
type: BootstrapDialog.TYPE_PRIMARY,
title: 'Confirmation',
message: question,
closeByBackdrop: false,
closeByKeyboard: false,
draggable: true,
buttons: [{
label: 'Yes',
action: function (dialog) {
defer.resolve(true);
dialog.close();
}
}, {
label: 'No',
action: function (dialog) {
defer.resolve(false);
dialog.close();
}
}],
close: function (dialog) {
dialog.remove();
}
});
return defer.promise();
}
function bsAlert(error, message) {
BootstrapDialog.show({
type: error ? BootstrapDialog.TYPE_DANGER : BootstrapDialog.TYPE_SUCCESS,
title: error ? "Error" : "Success",
message: message,
closeByBackdrop: false,
closeByKeyboard: false,
draggable: true,
buttons: [{
label: 'OK',
action: function (d) {
d.close();
}
}]
});
}
и используя его (почти так же)
bsConfirm("Are you sure Bootstrap is what you wanted?").then(function (a) {
if (a) {
bsAlert("Well done! You have made the right choice");
} else {
bsAlert("I don't like you!");
}
});