作成日:2019-04-08, 更新日:2019-04-08
エラー内容
Uncaught TypeError: document.getElementById(...).submit is not a function
▼原因と対策
・「name=submit」がいたので別名にした(※とりあえず「name=btn-send」にした)
経緯
1.他所様が用意してくれたJavascriptを使うコトになった
2.その中で「document.getElementById(〇〇〇).submit();」がいた
3.html部は適当に修正(「<input name="submit" type="button" ~>」を追加)
4.実行すると「Uncaught TypeError: document.getElementById(...).submit is not a function」が出てきた
メモ
何気に面倒な改修が必要になった・・・
以下は、余計なモノを削除したソースたち
▼元のソース:単純にsubmitされていたら結果を表示ってヤツ
<?php if( !isset($_POST["submit"]) ) { ?> <form method="post"> <input type="submit" name="submit"> </form> <?php } else { ?> echo "送信された"; <?php } ?>
JSで「submit()」する必要があるので「type=submit」を「type=button」にしてJSを組み込んだ。
▼改修後のソース:「Uncaught TypeError: document.getElementById(...).submit is not a function」になる
<?php if( !isset($_POST["submit"]) ) { ?> <form method="post" id="id_jsSend"> <input type="button" name="submit" onclick="jsSend()"> </form> <?php } else { ?> echo "送信された"; <?php } ?> <script> function jsSend() { document.getElementById("id_jsSend").submit(); } </script>
「name=submit」があるとダメだというので「name=submit」を「name=name_jsSend」にしてみた
▼submit()のエラー改修後のソース
<?php if( !isset($_POST["submit"]) ) { ?> <form method="post" id="id_jsSend"> <input type="button" name="name_jsSend" onclick="jsSend()"> </form> <?php } else { ?> echo "送信された"; <?php } ?> <script> function jsSend() { document.getElementById("id_jsSend").submit(); } </script>
$_POST["submit"]が取れない
jsで「submit()」をすると「if( !isset($_POST["submit"]) ){}」が真になる(※「echo "送信された";」が実行されない)
「$_POST」をvar_dump()すると「<input type="button" name="name_jsSend">」が取れていなかった。
面倒だったのでhiddenで「name=js_submit」を追加して「$_POST["js_submit"]」を条件にすることでひとまず解決。
<?php if( !isset($_POST["js_submit"]) ) { ?> <form method="post" id="id_jsSend"> <input type="hidden" name="js_submit" value="1"> <input type="button" onclick="jsSend()"> </form> <?php } else { ?> 送信された。 <?php } ?> <script> function jsSend() { document.getElementById("id_jsSend").submit(); } </script>