У меня есть форма, нажав кнопку отправки:
вот мой код
<?php if(isset($_POST['btn'])){ //do some task ?> <script type="text/javascript"> var e = document.getElementById('testForm'); e.action='test.php'; e.submit();</script> <?php } ?> <form name="testForm" id="testForm" method="POST" > <input type="submit" name="btn" value="submit" autofocus onclick="return true;"/> </form>
но не может отправить форму, если я назову код javascript на onClick, это работает. Какова проблема в этом коде, есть ли какая-нибудь работа для этого
Просто откликните javascript внутри функции if
<form name="testForm" id="testForm" method="POST" > <input type="submit" name="btn" value="submit" autofocus onclick="return true;"/> </form> <?php if(isset($_POST['btn'])){ echo " <script type=\"text/javascript\"> var e = document.getElementById('testForm'); e.action='test.php'; e.submit(); </script> "; } ?>
Вы можете разместить все свои JS таким образом, чтобы он не выполнялся до того, как ваш HTML готов
$(document).ready(function() { // some code here });
Помните, что это jQuery, поэтому включите его в раздел главы. Также см. Почему вы должны использовать jQuery и не загружать
Во время выполнения сценария кнопка не существует, поскольку DOM не полностью загружен. Самое простое решение – разместить блок сценария после формы.
Другим решением было бы захватить событие window.onload
или использовать библиотеку jQuery (overkill, если у вас есть только этот JavaScript).