Отправка формы с помощью jquery не работает

Вот мой код, настолько простой, насколько это возможно:

<form action = "">
  <input type = "text">
  <input type = "submit" value = "submit">
</form>
$("form").submit(function(e){
  e.stopPropagation();
  e.preventDefault();
  e.submit(); // tried also: $(this).submit()
});

Что я здесь делаю не так? почему не отправляет?

Потому что вы установили preventDefault() .... Что именно вы здесь пытаетесь сделать, поскольку код в вашем вопросе не имеет особого смысла.

Rory McCrossan 23.04.2018 18:19
$("form").submit(), уже отправляет форму
cela 23.04.2018 18:20

зачем ловить событие, когда вы просто отправляете его снова, ничего не изменяя?

Luca Kiebel 23.04.2018 18:20

это был ПРИМЕР, ребята ... давайте ... У меня там будет выражение if-else.

bevube 23.04.2018 18:23

«это был ПРИМЕР», а затем обозначить его как таковой. Этот код практически не имеет смысла, отсюда и ответы.

rmlan 23.04.2018 18:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
46
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий
e.target.submit();

Если вы вызываете submit в собственном элементе, а не в элементе jQuery, обработчики событий jQuery будут проигнорированы.

удалите preventDefault, это предотвратит отправку формы.

$("form").submit(function(e){
    e.stopPropagation();
    //e.preventDefault();
    return true;
});

Теперь, как написан ваш код, вы обрабатываете событие отправки формы и пытаетесь отправить его. Если вы проверите e, вы увидите, что это событие, а не реальная форма. Ваша форма отправляется, просто нажав кнопку отправки. Если вы хотите предотвратить это и сделать что-то перед отправкой, сделайте что-то вроде этого:

<form action = "" id = "myForm">
  <input type = "text">
  <input type = "button" value = "submit" id = "myButton">
</form>

$("#myButton").click(function(){
  $(this).stopPropagation();
  $(this).preventDefault();

  //do what you need to do 

  $("#myForm").submit();
});

Если в исходном коде вы действительно отправите форму в конце, это приведет к бесконечному циклу.

Вы должны использовать метод .submit() непосредственно в форме:

$("form").submit();

Другие вопросы по теме