У меня есть форма, при отправке которой мне нужно выполнить дополнительную обработку, прежде чем она должна будет отправить форму. Я могу предотвратить отправку формы по умолчанию, затем выполнить дополнительную обработку (в основном это вызов Google Maps API и добавление нескольких скрытых полей в форму), а затем мне нужна форма для отправки.
Есть ли способ «предотвратить дефолт», а затем через некоторое время «продолжить дефолт»?
javascript
jquery
StackOverflowNewbie
источник
источник
Ответы:
Использовать
jQuery.one()
Использование
one
предотвращения также бесконечный цикл, потому что это настраиваемоеsubmit
событие отключается после первой отправки.источник
Когда вы привязываете
.submit()
событие к форме и делаете то, что хотите, перед возвратом (true), эти вещи происходят до фактической отправки.Например:
Простой пример
Другой пример на jquery.com: http://api.jquery.com/submit/#entry-examples
источник
Я бы просто сделал:
Вызовите
preventDefault
сначала и используйтеsubmit()
функцию позже, если вам просто нужно отправить формуисточник
Таким образом вы создадите бесконечный цикл на своем JS. чтобы сделать лучший способ, вы можете использовать следующие
Я надеюсь, что это помогает! Спасибо!
источник
Это, IMHO, наиболее универсальное и надежное решение (если ваши действия инициируются пользователем, например, «пользователь нажимает кнопку»):
В качестве примера обратите внимание на это элегантное решение для добавления «Вы уверены?» всплывающее окно для любой кнопки, просто украсив кнопку атрибутом. Мы условно продолжим поведение по умолчанию, если пользователь не откажется.
1. Давайте добавим к каждой кнопке, которую мы хотим, всплывающее окно с предупреждением: «Вы уверены?»:
2. Прикрепите обработчики ко ВСЕМ таким кнопкам:
Вот и все.
источник
источник
С
jQuery
и небольшим вариантом ответа @Joepreludian выше:Важные моменты, о которых следует помнить:
.one(...)
вместо этого на.on(...) or .submit(...)
named
вместо функции,anonymous function
поскольку мы будем ссылаться на нее внутриcallback
.Вы можете изменить значение
allIsWell
переменной в ниже фрагменте кода , чтобыtrue
илиfalse
для тестирования функциональности:Удачи...
источник
В чистом виде Javascript вы можете отправить форму после предотвращения дефолта.
Это происходит потому , что
HTMLFormElement.submit()
никогда не называетonSubmit()
. Таким образом, мы полагаемся на эту странность спецификации, чтобы отправить форму, как если бы здесь нет настраиваемого обработчика onsubmit.См. Эту скрипку для синхронного запроса.
Дождаться завершения асинхронного запроса так же просто:
Вы можете проверить мою скрипку для примера асинхронного запроса.
И если вы не обещаете:
И вот эта просьба .
источник
Вы можете использовать,
e.preventDefault()
который остановит текущую операцию.чем ты можешь сделать
$("#form").submit();
источник
«Внедрение валидации без цикла отправки»:
Я просто хочу проверить reCaptcha и некоторые другие вещи перед проверкой HTML5, поэтому я сделал что-то вроде этого (функция проверки возвращает true или false):
источник