Диалоговое окно jquery с нулевым числом для многих дочерних jquery-диалогов

84
4

У меня есть "родительский" диалог jQuery, который может охватывать от одного до многих диалогов jQuery при нажатии кнопки OK. Он также может не создавать дочерние диалоги. Я также хочу, чтобы пользователь перешел на страницу подтверждения, когда в родительской кнопке нажата кнопка ОК.

Я использовал опцию стека в дочернем элементе, чтобы работать с "сложными" диалоговыми окнами. Моя проблема в том, что при нажатии кнопки "ОК" на "родительский" код продолжает выполняться, а браузер переводится на страницу подтверждения, прежде чем пользователь сможет ответить на "дочерний" диалог.

Есть ли способ, по которому родитель должен дождаться ответа дочерних диалогов, прежде чем код продолжит выводить пользователя на страницу подтверждения из родительского события OK?

Моя единственная другая мысль состояла в том, чтобы на самом деле иметь кнопку "child" OK, чтобы пользователь на странице подтверждения, которая могла бы немного усложнить код, так как мне нужен код, позволяющий ребенку знать, что это последний ребенок, поэтому я могу взять пользователя на страницу подтверждения.

function getDeclineReason(appName) {
$("#dvDeclineReason")
.dialog({
modal: true,
stack: true,
title: 'Decline Reason',

open: function() {

$('.ui-widget-content').css('background', 'white');
$('.ui-widget-header').css('background', '#0072C6');
$('.ui-widget-header').css('border', '1px solid #0072C6');
},

buttons: {
OK: function() {

$(this).dialog("close");
return;

},
Cancel: function() {
$(this).dialog("close");
return;
}
},

zIndex: 10000,
autoOpen: true,
width: 'auto',
resizable: false,
draggable: false,

});

}

function reviewRequest() {
getDeclineReason("Test");

$("#dvReview")
.dialog({
modal: true,
title: 'Review Request',

open: function() {

$('.ui-widget-content').css('background', 'white');
$('.ui-widget-header').css('background', '#0072C6');
$('.ui-widget-header').css('border', '1px solid #0072C6');
},

buttons: {
OK: function() {

var numChecked = 0;
$('input[name="apps"]').each(function() {

if (NWF$(this).is(':checked'))
numChecked++;

});

if (numChecked == 0) {
if (!confirm("You have not approved any applications. If this was you intent then press OK to confirm the deny of all applications. Otherwise press cancel to try again."))
return;
}

var totalApps = $('input[name="apps"]').length;
var countApps = 0;

$('input[name="apps"]').each(function() {

var decision;

if (NWF$(this).is(':checked'))
decision = "Approved";
else {
decision = "Declined";
getDeclineReason($(this).text());
}

switch (status) {
case "Pend Mgr Review":
updateFields["Title"] = "Manager Decision";
break;

case "Pend App Owner Review":
updateFields["Title"] = "App Owner Decision";
break;
}

countApps++;

/*

updateFields["RequestNumber"] = requestNum;
updateFields["Application"] = $(this).text(); // Get value from current check box item
updateFields["AppStatusID"] = $(this).val();
updateFields["Decision"] = decision;



if (countApps == totalApps)
updateFields["LastDecision"] = "Y";
else
updateFields["LastDecision"] = "N";


addListItem("Decision",updateFields);
*/

});

$(this).dialog("close");
//window.location.href = "/apps/TAI/SitePages/Decisioned.aspx";
return;

},
Cancel: function() {
$(this).dialog("close");
return;
}
},

zIndex: 10000,
autoOpen: true,
width: 'auto',
resizable: false,
draggable: false,

});

}

спросил(а) 2016-06-30T20:15:00+03:00 4 года назад
1
Решение
94

Вы можете отслеживать все открытые диалоги и каждый раз, когда пользователь нажимает "ОК", чтобы закрыть один из них, вычитайте его в счетчик и проверьте, нет ли оставшихся диалогов. Затем вы можете перенаправить пользователя на другой сайт.

ответил(а) 2016-06-30T20:25:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема