Доброго времени суток!
Не получилось найти решение проблемы со схожими на форуме, поэтому прошу помощи. Суть проблемы: есть два диалога error и attention. Когда их вызываю, то в первый раз появляются на секунду и пропадают, а в последующие разы срабатывают ожидаемым образом. Есть нюанс - эти диалоговые окна открываются поверх другого диалогового окна, плюс имеется диалоговое окно для AJAX "ход загрузки". Вот фрагмент кода:
$(document).ready(function () {
$("#ErrorMsg").dialog({
autoOpen: false,
buttons: { "Закрыть": function () { $(this).dialog("close"); } },
title: "Ошибка",
modal:true
});
$("#AttentionMsg").dialog({
autoOpen: false,
buttons: { "Закрыть": function () { $(this).dialog("close"); } },
title: "Внимание",
modal: true
});
});
//Динамически открываю основной диалог
function editV(obj) {
var id = $(obj).attr("value");
$.ajax({
url: "/Zakaz/GetV/" + id,
success: function (data) {
//html основного диалога с сервера(их несколько вариантов)
$("#div_V").html(data);
//кнопка сохранения. Собственно она и отвечает за обработку события, с которым воюю
$("#btn_save_v").button({
icons: { primary: 'ui-icon-disk', secondary: null }
}).on('click', function () {
saveV();
});
$("#btn_cancel_v").button({
icons: { primary: 'ui-icon-circle-close', secondary: null }
});
$("#btn_del_v").button({
icons: { primary: 'ui-icon-trash', secondary: null }
});
$("#btn_cancel_v").on("click",function () {
$("#div_V").dialog("close");
});
$("#btn_master_v").button({
icons: { primary: 'ui-icon-lightbulb', secondary: null }
});
$("#div_V").dialog({
modal: true,
title: "Редактирование объема",
width: 750
});
$("#div_V input,#div_V .klient_input,#div_V .klient_input_min,#div_V .klient_input_money").on("change",function () {
var state = $("#StateV").val();
switch (state) {
case "Загруженный":
$("#StateV").val("Измененный");
break;
default:
break;
}
});
}
});
}
function saveV() {
//Критерий, по которому определяем дальнейшие действия: сохранить, ошибка, ничего не менялось(чтоб не гонять данные лишний раз
var state = document.getElementById("StateV").value;
if (state == "Загруженный") {
console.log("Нет никаких изменений");
//текст в диалоге
$("#AttentionText").html("Никаких изменений не обнаружено! Если хотите выйти, то просто нажмите соответствующую кнопку.");
$("#AttentionMsg").dialog("open");
return false;
}
var serialisation = $("#form_V").serialize() + "&idZak=" + document.getElementById("IdZak").value;
$.ajax({
type: "POST",
url: "/Zakaz/SaveV",
data: serialisation,
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (XMLHttpRequest.status == "403") {
console.log("Нет прав на редактирование");
errorAJAX("Нет прав для редактирования заказа");
}
},
success: function (datas) {
//Успешная передача, работаем дальше
...
}
});
function errorAJAX(msg) {
$("#errorText").html(msg);
$("#ErrorMsg").dialog("open");
return false;
}
ASP MVC
JQuery версии 2.0.3
JQuery UI - 1.10.3
Кстати, не получилось побороть кодировку в XMLHttpRequest: в хедере передавал кодировку "Content-type: text/plain; charset=windows-1251" - все равно кракозябры рисует, но это, как понимаю, уже тема другого вопроса.
Заранее признателен!