Форма не отправляется на второй вызов

Я уже более недели борется со следующей проблемой, поэтому, пожалуйста, извините длинное описание. Я хочу, чтобы он был максимально точным и ясным:

Я использую плагин «simpler registration form» для регистрации новых пользователей. Мне нужно добавить в форму поле «адрес» для заполнения пользователями, а при нажатии кнопки «Отправить» адрес должен быть отправлен в API карт google и получить обратно широту и долготу, которые затем должны быть сохранены в wpdb вместе с остальные данные пользователя. Для этого я добавил следующее в php-функцию, которая строит html-форму:
– поле ввода адреса
– 2 скрытых поля для lat & long
– функция jquery, которая отвечает на кнопку отправки и должна делать свою работу после нажатия кнопки, но до того, как форма будет отправлена ​​и обработана с помощью php-функции плагина.

Поскольку использование API Карт Google асинхронно, чтобы выполнить эту работу, мне нужно сделать следующее:

Напишите функцию, которая отвечает на запрос отправки.
Эта функция должна препятствовать отправке формы и вызвать другую функцию, которая делает материал карт Google, и после того, как она будет завершена, отправит форму.
Проблема заключается во второй подаче. Этого просто не бывает.
Я пробовал разные способы (с jquery):
– функция отправки, которая вызывает себя с использованием флага, который сообщает первой итерации не отправлять, а второй – для отправки. Код работает нормально до второго итерационного представления, которое просто не работает.
– функция отправки, которая вызывает «this.submit ()». Опять же, «this.submit ()» не вызывает отправку формы.
– функция щелчка, которая должна отвечать на нажатие кнопки отправки, делать вещи Google, а затем вызывать функцию отправки. Здесь даже функция щелчка не срабатывает вообще.

// This is the button's definition: $form .= apply_filters('simplr-reg-submit', '<input type="submit" name="submit-reg" id="submit-reg" value="Register" class="submit button">'); // This is the php code that starts handling the submitted form if(isset($_POST['submit-reg'])) { 

Вот пример одной из моих попыток:

 function codeAddress(callback) { // do the google stuff // when finished submit the form $('#simplr-reg').get(0).submit(); // it's all being done except for the submit part } $('#simplr-reg').submit(function(event) { codeAddress(function(success){}); //callback from googlemaps event.preventDefault(); } // Here's a simplified example: $('#simplr-reg').submit(function(event) { this.submit(); //doesn't cause the form to submit event.preventDefault(); }); 

Если я не использую event.preventDefault () и отправлю на первой итерации, он отправляет штраф.

Я пытался решить это с помощью парней в stackoverflow, но никто не мог найти, что не так, поэтому я предполагаю, что это связано с WordPress или плагином.

Solutions Collecting From Web of "Форма не отправляется на второй вызов"

Функция php, которая обрабатывает представленные значения в этом плагине, проверяет сначала, если значение кнопки isset . При использовании оригинального представления это так. При использовании preventDefault() а затем при вызове submit() это не так, и поэтому php не обрабатывает представленную форму, а перестраивает ее. Чтобы исправить это, я просто добавил к isset() проверить, являются ли значения lat / long истинными. Это сделал трюк.

Я чувствую, что этот вопрос здесь не принадлежит, но тем не менее.

OK Ash попробуйте свою логику следующим образом:

 <script> var wasGoogleFetchSuccess = 0; $('#simplr-reg').submit(function() { if(wasGoogleFetchSuccess == 1) { return true; // I can now submit form as normal } else { goDoGoogleMapAddressSearch(); return false; // dont submit form this time round } }); function goDoGoogleMapAddressSearch() { //Do google map search //On success or completion do the following: $("blah blah blah").success(function() { // Just an example wasGoogleFetchSuccess = 1; $('#simplr-reg').submit(); }); } </script>