作成日: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>