Я пытаюсь создать функцию, которая показывает модальное диалоговое окно, которое при вызове блоков будет закрыто до тех пор, пока диалог не будет закрыт. Это позволит получить результат возвращается вызывающему абонентуКак заблокировать диалог («открыть») с помощью диалога jQuery/UI
Следующая функция - попытка, которая имеет две проблемы.
- Он возвращает результат, пока диалог по-прежнему открыт.
- Тест-селектор не находит диалоговое окно, проверка с помощью firebug показывает, что элемент
id
теряется после создания диалога.
.
function getCountrySelection() {
var ctryCode;
var dlg = $("#JS-field-dlg-ctry-select");
if (dlg.size() === 0) {
dlg = $("<div id='JS-field-dlg-ctry-select' title='Select Country' class='dialog-fields'></div>");
dlg.append("Customer found in both Australia and New Zealand");
dlg.dialog({
autoOpen: false,
width: 400,
height: 160,
modal: true,
buttons: {
"Australia": function() {
ctryCode = "au";
$(this).dialog("close");
},
"New Zealand": function() {
ctryCode = "nz";
$(this).dialog("close");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
}
dlg.dialog('open');
return ctryCode;
}
EDIT: Я думал, что я хотел бы показать, как я звоню это:
buttons: {
"Find": function() {
var custAu = JS.sales.getCustomer("au", inpCust.val());
var custNz = JS.sales.getCustomer("nz", inpCust.val());
var cust;
if (custAu === undefined && custNz === undefined) {
alert('No customer could be found with that number.');
return;
} else if (custAu !== undefined && custNz !== undefined) {
var ctry;
getCountrySelection(function(result) {
ct = result;
});
if (ctry === "au") {
cust = custAu;
} else if (ctry === "nz") {
cust = custNz;
} else {
return;
}
} else if (custNz === undefined) {
cust = custAu;
} else {
cust = custNz;
}
if (cust) {
$(this).dialog("close");
// Do something with cust.
} else {
alert('Customer could not be found.');
}
},
"Cancel": function() {
$(this).dialog("close");
}
}
Вы не можете сделать это в браузере JavaScript. – Pointy