次のコードを使用して、ページ内のすべてのフォームからデータを取得します。イベントは動的にバインドされます。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
}
送信ボタン(デフォルト動作)をクリックしてフォームを送信すると問題なく動作します。
しかし、ときに私は、フォーム上でこのような何かをバインド:
#test-form
は、フォーム名で、
#form-submit
がそれにバインドされている機能は発生しませんsubmitボタンのIDです
jQuery("#form-submit").on("click",function(e){
e.preventDefault();
jQuery("#test-form").submit();
console.log("form has been submitted");
window.location = "https://example.com";
})
。
フローを中断することなくフォームからデータを取得する方法はありますか?
'useCapturing'フラグ(' addEventListener'に渡されるブール値)を 'true'にしてみてください。 –
試しました。しかし、使用しないでください。 –