JavaScriptでform.submit();しようとするとエラーになる

JavaScriptではHTML内のFormに対し、submitするように指示することができます。 通常、こんな感じですかね。

document.form[0].submit();

普通にsubmitのボタンを作ればいい話なんですが、 submitする前に最低限の入力チェックをJavaScriptで行いたい場合なんかに使用します。

通常はこれで全く問題ないはずなんですが、特定の状況にてsubmit()しようとすると JavaScirptエラーが出てsubmit出来ない場合があります。

対象<form>内の要素のnameに'submit'って付けちゃダメポ

もの凄く当たり前と言えば当たり前の話なんですが、結構気づきにくいです。 しかも、onclikにsubmitさせるためのJavaScriptを記述するinput等の要素には name="submit"と書いてしまいがちです。

form内に'submit'と言うnameの要素があると、 form[0].submit までの時点で「form[0]内のsubmitと言う名称の要素」 とみなされてしまうので、その後に () が来ると当然エラーとなってしまいます。 つまり(少なくともIEでは)、要素の内容を参照するとき、メソッドやプロパティよりも、 子要素の方が優先されて解釈されると、言うことですな。

これ、ハマると平気で一時間くらい無駄に時間をすごすのでお気をつけください。(自分)

このメソ知恵は訳に立ちましたか?

選択肢 投票
はい 88  
いいえ 30  

  • とっても助かりました。thx -- クロにないネジ? 2009-04-03 (金) 10:38:16
  • 記事を見る前にはまりました。。。 -- at? 2009-05-30 (土) 16:02:49
  • ありがとうございます。はまってました…。 -- すぎひろ? 2009-12-06 (日) 22:36:31
  • 助かりました^^ありがとうございます! -- ひのん? 2013-11-02 (土) 03:26:40

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White