Отправка формы JQuery обновляет страницу

Подскажите, пожалуйста, почему этот код не работает? Это просто обновление страницы.

 jQuery(document).on('submit', '.comment-form', function (event) {
        alert('hello')
        event.preventDefault();

        const form = jQuery(this);
        const id = form.attr('id');

        console.info(id)


        //do stuff ...


        return false;
    });

У меня есть две такие формы на одной странице. Они добавляются динамически с помощью Handlebars.

<form class = "column-form comment-form" id = "{{_id}}">
    <div class = "">
        <div class = "col-12-10 col-medium-12-12 comment-content">
            <input placeholder = "Add a comment" type = "text" value = "" id = "comment-{{_id}}" name = "">
        </div>
        <div class = "col-12-2 col-medium-12-12 flex comment-submit">
            <input value = "Submit" type = "submit" />
        </div>
    </div>
</form>

* Редактировать *

    jQuery(document).on('submit', '.comment-form', function (event) {
        event.preventDefault();
        alert('hello')
    });

Возможно, это проблема проверки данных?

JosephDoggie 09.05.2018 21:17

Я не понимаю о чем ты. Я просто хочу, чтобы он предупредил "привет". Просто чтобы увидеть, что он попадает в этот прослушиватель событий, и он не ... пробовал все.

Ciprian 09.05.2018 21:18

Простите. Была часть // do stuff, поэтому я подумал, что, возможно, форма действительно что-то отправила ...

JosephDoggie 09.05.2018 21:20

Вы дублируете идентификаторы на странице?

j08691 09.05.2018 21:20

"не работает" - вы видите alert('hello')?

Igor 09.05.2018 21:23

Регистрируете ли вы этот обработчик после завершения загрузки DOM?

user47589 09.05.2018 21:23

Я так не думаю. Но какое это имеет значение? Я слушаю отправку .comment-form, а затем использую идентификатор формы. Я бы просто отправлял с неправильным идентификатором.

Ciprian 09.05.2018 21:24

@ Игорь нет бдительности ...

Ciprian 09.05.2018 21:24

@Amy Мой код находится в функции document.ready

Ciprian 09.05.2018 21:24

@Ciprian это не обязательно, если оно находится после тега скрипта библиотеки jQuery

Igor 09.05.2018 21:28

странно ... я все прокомментировал внутри и оставил только то, что было в моей редакции ... (я ненавижу, что вы не можете правильно форматировать код в комментариях SO), и я получаю предупреждение. Кажется, что-то еще его ломает. Я проверю. Спасибо за помощь. :)

Ciprian 09.05.2018 21:40

@Ciprian ищет ошибки в консоли браузера во время загрузки страницы

Igor 09.05.2018 21:41

Я просто попробовал этот код, и он работает нормально и не обновляет страницу ... если вы не забыли установить ссылку на библиотеку jQuery или не оставили фрагмент кода, который переопределяет тот, который вы нам показали.

Ason 10.05.2018 03:16
Поведение ключевого слова "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
13
71
2

Ответы 2

Судя по тому, что вы не видите предупреждения, в отсутствующем коде есть синтаксическая ошибка, из-за которой парсер отбрасывает весь блок скрипта.

jQuery(document).on('submit', '.comment-form', function(event) {
  alert('hello')
  event.preventDefault();

  const form = jQuery(this);
  const id = form.attr('id');

  console.info(id)


  //do stuff ...


  return false;
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class = "column-form comment-form" id = "{{_id}}">
  <div class = "">
    <div class = "col-12-10 col-medium-12-12 comment-content">
      <input placeholder = "Add a comment" type = "text" value = "" id = "comment-{{_id}}" name = "">
    </div>
    <div class = "col-12-2 col-medium-12-12 flex comment-submit">
      <input value = "Submit" type = "submit" />
    </div>
  </div>
</form>

Э-э, а чем ваш ответ отличается от вопроса ОП?

user47589 09.05.2018 21:28

Я не вижу разницы

Muhammad Usman 09.05.2018 21:28

нет никакой разницы, это демонстрирует, что здесь работает простой случай, что дает ОП уверенность в представленном коде и возможность искать ошибки в другом месте

Igor 09.05.2018 21:29

Среда

Ciprian 09.05.2018 21:29

Зачем говорить людям искать отличия в первой строке вашего ответа, если их нет? Это похоже на загадку «Где Уолдо», в которой нет Уолли.

user47589 09.05.2018 21:32

У меня была такая же ошибка с моим кодом, не волнуйтесь - это легко исправить.

Вы пытались добавить:

onsubmit = "return false;"

Ваш код должен выглядеть так:

<form onsubmit = "return false;" class = "column-form comment-form" id = "{{_id}}">
  <div class = "">
    <div class = "col-12-10 col-medium-12-12 comment-content">
      <input placeholder = "Add a comment" type = "text" value = "" id = "comment-{{_id}}" name = "">
    </div>
    <div class = "col-12-2 col-medium-12-12 flex comment-submit">
      <input value = "Submit" type = "submit" />
    </div>
  </div>
</form>
onsubmit = "return false;" отличается от event.preventDefault(); и return false;, которые сейчас используются?
j08691 09.05.2018 22:00

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