У меня странная проблема, и я хотел бы получить профессиональную обратную связь.
Я создаю приложение CRM, где у меня есть форма с кнопкой предварительного просмотра. Когда кнопка предварительного просмотра нажата, моя функция FIRST сохраняет все поля формы в БД через Ajax и затем отправляет форму для предварительного просмотра.
Поля формы хранятся в массиве (так как эти поля изменяются). Я зацикливаю массив с помощью jQuery.each (myArray, function (index, value).
Проблема в том, что форма отправляется до выполнения цикла. Если я помещаю предупреждение в цикл или добавляю установленное время ожидания в document.submit (), все работает хорошо.
Я хотел бы знать, почему цикл не завершается, прежде чем перейти к следующей строке в коде.
Вот мой код.
var myArray = ['sub','msg','pic','field4','field5','field6','field7'];
jQuery(document).ready(function($){
$.each(myArray, function(index, value) {
SaveFields(value); // my function that saves to db via Ajax call
});
});
//document.formName.submit(); // this submits the form before .each loop can execute
eval("setTimeout('document."+formName+".submit()', 700)"); // THIS WORKS AS INTENDED
Я также попытался посчитать элементы массива и добавил submit () внутри цикла следующим образом ...
var ArrCount = myArray.length - 1;
jQuery(document).ready(function($){
$.each(myArray, function(index, value) {
var saveIt = SaveFields(value);
if (ArrCount == index){
document.formName.submit(); // this also submits the form before .each loop can execute
}
});
});
Те же результаты! Он будет работать только с предупреждением или setTimout!
Любая помощь приветствуется, потому что я действительно хочу знать, почему цикл не завершается, прежде чем перейти к следующей строке.