2012-05-15 30 views
24

Tengo un conseguido una forma, al hacer clic en el botón de envío:cómo escribir código JavaScript dentro de php

  1. que quiero hacer alguna tarea en el mismo archivo (tarea DB) y
  2. Quiero que el los datos del formulario para ser enviados a test.php con la redirección

aquí es mi código

<?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> 

pero no en condiciones de presentar la fo rm, si llamo al código javascript en onClick, funciona.¿Cuál es el problema en este código? ¿Hay algún problema para este

+2

Bastante lógico, su javascript se ejecuta en el momento en que se emite en el navegador y se imprime su formulario ... después de eso. Debe encerrar su código en un oyente de eventos window.onload para que solo se ejecute una vez que se complete la carga de la página. – yent

Respuesta

45

Sólo el eco Javascript a cabo dentro de la función si

<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> 
     "; 
    } 
    ?> 
+1

Tenga en cuenta que la solución aquí es _no_ generar el código JavaScript con PHP pero el hecho de que el bloque PHP viene después de las etiquetas de formulario, lo que significa que el elemento DOM 'testForm' se inicializa cuando se ejecuta el JavaScript. – chiborg

4

En el momento en que se ejecuta el script, el botón no existe porque el DOM está no completamente cargado La solución más fácil sería colocar el bloque de script después del formulario.

Otra solución sería la de capturar el evento window.onload o utilizar el jQuery library (exageración si sólo tiene éste JavaScript).

5

Usted puede poner todas sus JS como este, por lo que no se ejecuta antes de su HTML está listo

$(document).ready(function() { 
    // some code here 
}); 

Recuerde esto es jQuery, así que inclúyelo en la sección principal. También vea Why you should use jQuery and not onload

Cuestiones relacionadas