2013-11-07 1 views
1

Я пытаюсь выполнить две функции в javascript, но вторая функция должна ждать завершения первой функции.Функция вызова функции Javascript для ожидания до завершения предыдущего mvc 4

Вид:

<button id="DefinirEstab" class="btn btn-success btn-lg" data-toggle="modal" data-target="#myModal" onclick="saveContrato(); CountEstab()"> Define 
</button> 

Первая функция ЯШ:

function saveContrato() { 
$("#formContrato").ajaxSubmit({ 
    type: "POST", 
    url: $("#formContrato").attr("action"), 
    clearForm: false, 
    success: function() { 
     $("#Serie").attr("disabled", true) 
    } 
}); 
$("#DefinirEstab").attr("onclick", "CountEstab()"); 

}

Вторая функция JS (ждать первый был закончен):

function CountEstab() { 

    //Guardar os dados na tabela serviço 
    var Serie = $("#Serie").val(); 
    var NumDoc = $("#NumDoc").val(); 
    $.getJSON("/Contrato/saveCabecalhoServicos", { 
     serie: Serie, numDoc: NumDoc, idForn: window.IdFornecedor, idFilial: e 
    }); 

} else { 
    alert("Falta de dados obrigatórios preenchidos!!"); 
} 

}

+1

Вызов 'CountEstab' в обратном вызове успеха' saveContrato' вместо вызова в одно и то же время. – Mathletics

+1

Почему вы назначаете countEstab для onclick attr вместо передачи функции обработчику событий click? $ ("# DefinirEstab"). Click (CountEstab) – egucciar

ответ

1

Звоните CountEstab() внутри success function.

HTML

<button id="DefinirEstab" class="btn btn-success btn-lg" data-toggle="modal" data-target="#myModal"> Define 
</button> 

Javascript

$('#DefinirEstab').on('click', function() { 
    saveContrato(); 
    return false; 
}); 

function saveContrato() { 
    $("#formContrato").ajaxSubmit({ 
     type: "POST", 
     url: $("#formContrato").attr("action"), 
     clearForm: false, 
     success: function() { 
      $("#Serie").attr("disabled", true); 
      CountEstab(); 
     } 
    }); 
} 
+0

Должен ли он по-прежнему нуждаться в CountEstab для обработчика кликов для элемента, если его вызывают из обратного вызова успеха? – egucciar

+0

Нет, он должен удалить обработчик кликов. – jbarnett

+0

с такой же проблемой ... –

1

Pass вторую функцию обратного вызова в качестве первой функции.

function saveContrato(callback) { 
    $("#formContrato").ajaxSubmit({ 
     type: "POST", 
     url: $("#formContrato").attr("action"), 
     clearForm: false, 
     success: function() { 
      $("#Serie").attr("disabled", true) 
      callback(); 
     } 
    }); 
    $("#DefinirEstab").attr("onclick", "CountEstab()"); 
} 

saveContrato(CountEstab) 
+0

где я поставил 'saveContrato (CountEstab)' ?? –

Смежные вопросы