2017-01-30 2 views
0

У меня есть следующий код для захвата данных из всех форм на странице. События связаны динамически.Динамически связанное событие не запускается при отправке формы через jQuery

formCapture: function() { 
     console.log("formCapture"); 
     var formsCollection = document.getElementsByTagName("form"); 
     console.log(formsCollection); 
     for (var i = 0; i < formsCollection.length; i++) { 
     this.bindEvent(formsCollection[i]); 
     } 
    }, 

    bindEvent: function (formElement) { 
     console.log("bindEvent"); 
     var $this = this; 
     if (formElement.addEventListener) { 
     formElement.addEventListener('submit', function (e) { 
      $this.collectData(e, $this) 
     }, false); 
     } 
    }, 

    collectData: function (e, that) { 
     // save form data here 
    } 

Он отлично работает, когда форма отправлена, нажав кнопку отправки (поведение по умолчанию).

Но когда я связать что-то вроде этого на форме:

jQuery("#form-submit").on("click",function(e){ 
    e.preventDefault(); 
    jQuery("#test-form").submit(); 
    console.log("form has been submitted"); 
    window.location = "https://example.com"; 
    }) 

Где #test-form это имя формы и #form-submit является идентификатор кнопки представить функцию collectData, привязанный к нему не будет стрелять.

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

+0

Попробуйте сделать флаг 'useCapturing' (логическое значение, переданное' addEventListener') 'true'. –

+0

Пробовал. Но бесполезно. –

ответ

0

Вы должны не просто использовать функцию отправки, но и запустить отправку как: jQuery («# test-form»). Trigger ('submit');

+0

Эта часть не будет под моим контролем. Форма может быть представлена ​​любым возможным способом. Обычная отправка или использование jQuery. –

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