Перед тем, как задать вопрос, я не смог исправить эту проблему, но я не смог ее исправить.Форма отправить после завершения расчета скрипта
В принципе, у меня есть сайт, на котором пользователь может создать проект. Пользователь может добавить столько задач к этому проекту, сколько захочет, и каждая задача имеет число, которое добавляет к общей сумме в конце. Обычно функция Javascript (TotalSum()
), которую я разработал для этого вычисления, работает отлично, но некоторые пользователи хотят иметь возможность использовать клавишу Enter для отправки формы. Хотя он действительно представляет форму, как и следовало ожидать, она не запускает функцию вычисления и вместо этого пропускает прямо к представлению формы. Это приводит к представлению чисел, которые могут быть более точными для расчетов.
TotalSum() запускается после того, как поле ввода номера изменено, и пользователь либо щелкает, либо нажимает кнопку «Отправить», либо все, что вы ожидаете, - все, кроме автоматического представления с помощью клавиши Enter.
Мое намерение состоит только в том, чтобы предоставить форму после функция завершила вычисление и заполнила все поля ввода новыми номерами. Как я мог лучше это сделать?
Я пробовал различные способы обойти это, но, как правило, предотвращение отправки формы также мешает мне отправить его снова.
$('#form_project').submit(function (e) {
TotalSum();
// TotalSum(); is done calculating, proceed with submitting the form away!
});
Я мог бы также использовать PHP просто сделать расчет после того, как форма передается, но кодирование в PHP, что Javascript уже работает хорошо само по себе, если он должным образом разрешено закончить вычисления с помощью клавиши Enter, просто кажется беспорядочным решением.
jQuery - это абсолютно вариант. Как мне лучше всего это сделать?
Используйте ** [$ .deferred] (https://api.jquery.com/jquery.deferred/) ** –
Как я могу лучше всего использовать .deferred (я думаю, что .allways или .done лучше всего послужит моим целям) для работы с моей функцией TotalSum()? Так что jquery позволяет TotalSum завершить, прежде чем приступать к отправке всей формы. – McScrooge
Точно .. Он будет ждать завершения «обещания» –