🤬
form 内に id="submit", name="submit" の要素があるときに form.submit() を実行できない
ということがあったのでこれを回避したメモ。
状況
自分の管理下の form であるならば id name が submit の要素を入れなければいいだけだが、自分の管理外のページに汎用的に script で submit の割り込み処理を入れる必要があった。
例
たとえばこんな html があって
<form id="form">
<input type="submit" id="submit" />
</form>
こんな処理を入れたい
const targetForm = document.getElementById('form');
targetForm.addEventlistener('submit',function(event){
event.preventDefault();
console.log('waiting...');
window.setTimeout(function(){
targetForm.submit(); // ここが問題
},1000)
})
すると、
targetForm.submit is not a function
とか言われる。
解決
以下で回避
HTMLFormElement.prototype.submit.call(targetForm);
参考
Discussion