[JavaScript] form内にname=”submit”という要素があるとsubmit()が動かない

JavaScript で、form内にname=”submit”という要素があると .submit() が動かないらしいです。

そんなわけで、jQueryで下記のように書いたら Property ‘submit’ of object # is not a function というエラーが出ました。

<form id="js-form" method="POST" action="/create">
  <input type="text" name="sample" />
  <input id="#js-submit-btn" type="submit" name="submit" value="保存" />
</form>
 
<script type='text/javascript'>
  $('#js-submit-btn').click(function(){
    $(this).attr('disabled', true);
    $('#js-form').submit();
  });
</script>

formタグの中に submit という name の要素を置くと、そちらを参照してしまうようです。

なので、

<input id="#js-submit-btn" type="submit" name="submit" value="保存" />

<input id="#js-submit-btn" type="submit" name="save" value="保存" />

というように修正すればOKです。


参考情報

javascriptでsubmitできない? | dTblog | デザインとプログラムの境界をさまようブログ

[jQuery]form.submit()できない原因 | HappyQuality

javascript – Property 'submit' of object #<HTMLFormElement> is not a function – Stack Overflow