Ho un modulo, cliccando il pulsante di invio:
Ecco il mio codice
<?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>
ma non è in grado di inviare il modulo, se chiamo il codice javascript su onClick, funziona.qual è il problema in questo codice, c'è qualche lavoro in giro per questo
Basta echeggiare il javascript all'interno della funzione 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>
";
}
?>
Puoi mettere tutto il tuo JS in questo modo, così non viene eseguito prima che il tuo HTML sia pronto
$(document).ready(function() {
// some code here
});
Ricorda che questa è jQuery, quindi includila nella sezione head. Vedi anche Perché dovresti usare jQuery e non onload
Nel momento in cui lo script viene eseguito, il pulsante non esiste perché il DOM non è completamente caricato. La soluzione più semplice sarebbe quella di mettere il blocco di script dopo il modulo.
Un'altra soluzione sarebbe quella di catturare l'evento window.onload
o usare la libreria jQuery (eccessivo se si ha solo questo JavaScript).