submit ボタン無しで javascript から submit するYO!
.html
<style>
textarea {
vertical-align: top;
}
</style>
<form id='inputs'>
<p>
<label for='name'>Name</label>
<input id='name'>
</p>
<p>
<label for='content'>Content</label>
<textarea id='content'></textarea>
</p>
</form>
<script>
// Meta + Enter で submit しますねん
inputs.onkeydown = e => {
// Meta + Enter で処理する
if (e.key != 'Enter' || !e.metaKey) return;
// フォーム (HTMLFormElement) を得る
const form = e.currentTarget;
// 空の Event を作る
const form_event = document.createEvent('HTMLEvents')
// Event 初期化 (submit 機能。イベントチェーンを浮上。キャンセル可)
form_event.initEvent('submit', true, true);
// イベントを dispatch できたら……
if (form.dispatchEvent(form_event)) {
// submit() メソッドを使える
form.submit();
}
}
</script>
createEvent()
の HTMLEvents
ってのがよく分からない。
「取り得るイベント型は "UIEvents", "MouseEvents", "MutationEvents", "HTMLEvents" のいずれかです」で submit に関するコトだから、 HTMLEvents
なのかなあ、と
あと dispatchEvent()
も、どうしてこれでうまくいくのか説明できないorz