J'ai un formulaire, en cliquant sur le bouton "submit" :
Voici mon code
<?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>
mais je ne peux pas soumettre le formulaire, si j'appelle le code javascript sur onClick, cela fonctionne. Quel est le problème dans ce code, y a-t-il un moyen de contourner ce problème ?
Il suffit d'envoyer le javascript à l'intérieur de la fonction 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>
";
}
?>
Vous pouvez placer tous vos JS comme ceci, afin qu'ils ne s'exécutent pas avant que votre HTML soit prêt.
$(document).ready(function() {
// some code here
});
N'oubliez pas qu'il s'agit de jQuery et que vous devez l'inclure dans la section head. Voir aussi [Pourquoi vous devriez utiliser jQuery et non onload][1].
[1] : http://docs.jquery.com/How_jQuery_Works#Launching_Code_on_Document_Ready
Au moment où le script est exécuté, le bouton n'existe pas car le DOM n'est pas entièrement chargé. La solution la plus simple serait de placer le bloc de script après le formulaire.
Une autre solution consisterait à capturer l'événement window.onload
ou à utiliser la [bibliothèque jQuery][1] (trop compliqué si vous n'avez que ce seul JavaScript).