2016-12-01 6 views
1

フォームに送信イベントハンドラがあります(送信ボタン以外のものをクリックしたときにトリガされることがあります)。dispatchEventでDefault()を防止するにはどうすればよいですか?

I は、それが実際にかかわらず、フォームを送信する必要はありませんが、は、dispatchEventが発射された後、私がそれを取り消すことはできないようだ?Chromeの場合

myForm.addEventListener('submit', function(e) { 
    e.preventDefault(); 
    console.log(e.defaultPrevented); // false 
}); 

myForm.dispatchEvent(new Event('submit', {'detail': 'mydetail'})); 

これはまだfalseを出力しますが、フォームが送信されません。 (希望の動作)。実際に私がでpreventDefault()行を削除しても、それはまだ提出していないのですか?

しかし、Firefoxは別の話で、常にフォームを送信します。

どうすれば変更できますか?

+0

ボタンで送信しても問題ありませんか? –

+0

私はボタンを持っていない、私は実際に提出するフォームを望むことはありません。 – Codemonkey

+0

あなたはmyForm.dispatchEvent({ 'mydetail'、解約: '詳細' 真}新しいイベント( '提出' を、))試してみてください。 – sandyJoshi

答えて

2

キャンセル可能なプロパティをTRUEに明示的にコーディングしなければならず、デフォルトでは処理されません。

myForm.dispatchEvent(new Event('submit', {'detail': 'mydetail', cancelable: true})) 
関連する問題