TypeError: e[h] is not a function.はなぜ起きたのか

またform周りの仕様に苦しめられた。

submitのイベントの前にhiddenで渡す値を変更したくてsubmitボタンをクリックしたときにそれを行おうとしていたのだが、
「それだとブラウザの仕様でelementが書き換わる前にsubmitが行われる可能性があるかもしれない」
と言われた(一応手元のブラウザで確認したけどそういうことはなかった。けど念のため対策はしないといけない)ので、buttonエレメントのclickイベントで発火するようにした。

そこでデザイナーさんに「ちょっとinput type="button"にしてくれませんか」といわれたのでそっちでやってみたら

TypeError: e[h] is not a function

が起きた。なんじゃこりゃ


ということでググったら案の定stackoverflowにあった

javascript - TypeError: e[h] is not a function - Stack Overflow

英語力のなさに定評のある俺ががんばって訳してみると

お前どれかのinputエレメントにidとかnameにsubmitってやつがないか?あったらそれを消したら治るよ。
どうやらinputエレメント中にそれがあると自動的にHTMLInputElementのsubmitプロパティがセットされるみたいでな。それでHTMLFormElementの方にはsubmitがないって言われたみたい

ということらしい。調べてみたらあった。んで直したら動いた。
こういう細かい仕様はよくわからんな…