Показать сообщение отдельно
  #1 (permalink)  
Старый 17.12.2013, 12:51
Новичок на форуме
Отправить личное сообщение для BlackSSA Посмотреть профиль Найти все сообщения от BlackSSA
 
Регистрация: 17.12.2013
Сообщений: 5

Событие срабатывает со второго раза
Доброго времени суток!
Не получилось найти решение проблемы со схожими на форуме, поэтому прошу помощи. Суть проблемы: есть два диалога 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" - все равно кракозябры рисует, но это, как понимаю, уже тема другого вопроса.
Заранее признателен!

Последний раз редактировалось BlackSSA, 17.12.2013 в 12:55. Причина: дописал
Ответить с цитированием