2015-03-18 4 views
0

Я удаляю все jQuery из своего JavaScript (это было предложено для максимизации скорости) и имеет одну последнюю проблему. Цель состоит в том, чтобы запустить функцию loadData для отправки.Почему форма .submit() работает при использовании jQuery, но не при использовании vanilla JS?

при запуске моего сценария это работает:

$('#form-container').submit(loadData); 

, но это не делает:

clickContainer = document.getElementById('form-container'); 
clickContainer.addEventListener('submit', loadData()); 

Как запустить свою функцию LoadData с представленной информацией в ванильном JS?

Полный код @https://github.com/ChaMbuna/Marvel-Map

Спасибо!

+2

Попробуйте: 'clickContainer.addEventListener ('submit', loadData);'. Передайте слушателю события функцию, а не функцию, возвращаемую функцией. – bloodyKnuckles

ответ

1

Решение: проблемы Передача функции в Javascript addEventListener

Pass addEventListener имя функции, не возвращаемое значение функции. Сделайте это:

clickContainer.addEventListener('submit', loadData); 

Pass, чтобы addEventListener имя функции, которую вы хотите выполнить, когда представить пожаров событий. Немедленная добавление скобок к имени функции заставляет выполнение функции и независимо от того, что возвращает функция , передается методу addEventListener, а не самой функции.

Исключением является то, что функция loadData фактически вернула функцию, и вы хотели, чтобы функция возврата выполнялась, когда отправить пожаров. В этом случае вы должны выполнить loadData, как в loadData(). Ах, красота JavaScript.

Смежные вопросы