PHP - Codigo Javascript no funciona dentro del codigo PHP

   
Vista:

Codigo Javascript no funciona dentro del codigo PHP

Publicado por Evair_Peterson (3 intervenciones) el 30/07/2013 19:07:23
Necesito ejecutar un codigo javascript durante la ejecución de un codigo PHP. La ejecicón sera de esa forma: cuando el usuario haz click el el botón REGISTRAR del formulario, se ejecutara la función javascript JSF(), que deberá hacer una primera validación de los datos en el formulario. Si todo esta OK, habra un submit que va ejecutar la segunda validación con la función PHP enviar(). Si todo esta OK de nuevo, va seguir con el logeo del usuario...

Durante las validaciones, si se encuentra algun error, sera generado un mensaje de que deberá ser impreso en el campo frmRegisterError del formulario. Con javascript logré hacer de esa manera:

Código Javascript:
1
2
var frmRegisterError = document.getElementById("frmRegisterError");
frmRegisterError.value = "INFORME SEU NOME DE USUÁRIO";


Como todo lo que he leido acerca de PHP dice que no se puede direccionar un mensaje para un campo especifico del formulario solo con el PHP, lo que me vino a la mente es mexclar los codigos javascript con los de PHP. Buscando por internet, encontré algo semejante a lo que necesito y se lo adapté de esa forma para mi caso:

Código HTML:
1
2
3
4
5
6
7
8
9
<form method="post" action="teste.php?function=enviar" id="frmRegister" name="frmRegister" accept-charset="utf-8">
  <label>Nombre de usuario: </label>
  <input type="text" id="frmRegisterUN" value="" name="frmRegisterUN" />
  <br />
  <label>Se encontro un error: </label>
  <input type="text" value="" id="frmRegisterError" name="frmRegisterError"/>
  <br />
  <input type="button" value="REGISTRAR" id="frmRegister_Button"/ onClick="JSF ()">
</form>


Y en el HEAD de la pagina le puse los codigos javascript y los codigos PHP:

Código Javascript:
1
2
3
4
5
6
<script type="text/javascript">
function JSF ()
{
document.getElementById("frmRegister").submit();
}
</script>


Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if($_GET['function'] == "enviar")
{
    enviar();
}
 
function enviar ()
{
    if (isset($_POST))
    {
        $usuario = $_POST['frmRegisterUN'];
        if ($usuario != "")
        {
            ?>
            <script>
            document.write("OK. EL CODIGO FUNCIONA.");
            </script>
      <?php
        }
        else
        {
            echo "EL NOME DE USUARIO ES REQUERIDO";
        }
    }
}
?>


En ese modo de prueba me funciona perfectamente el codigo. Me devuelve el mensaje con el PHP igual que con el javascript. Con eso pienso que solo necesitaba cambiar el codigo PHP de la función enviar () para rellenar el value del input con el mensaje de error que necesito. Asi que probé ese código:

Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function enviar ()
{
    if (isset($_POST))
    {
        $usuario = $_POST['frmRegisterUN'];
        if ($usuario != "")
        {
            ?>
      <script>
            var error = document.getElementById("frmRegisterError");
            error.value = "OK. EL CODIGO FUNCIONA.";
            </script>
      <?php
        }
        else
        {
            echo "EL NOME DE USUARIO ES REQUERIDO";
        }
    }
}
?>


Pero no sé por cual motivo no me funciona de esa manera. Después de unas cuantas pruebas llegué a la seguiente conclusión: Cuando se tiene javascript dentro del PHP no funciona el getElementById. Para saber si es cierto eso, cambié la funcion javascript JSF() y la funcion PHP enviar() de ese modo:

Código Javascript:
1
2
3
4
5
6
7
8
<script type="text/javascript">
function JSF ()
{
var error = document.getElementById("frmRegisterUN").value;
alert (error);
document.getElementById("frmRegister").submit();
}
</script>


Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
if($_GET['function'] == "enviar")
{
    enviar();
}
 
function enviar ()
{
    if (isset($_POST))
    {
        $usuario = $_POST['frmRegisterUN'];
        if ($usuario != "")
        {
            ?>
      <script>
            var error = document.getElementById("frmRegisterUN").value;
            alert (error);
            </script>
      <?php
        }
        else
        {
            echo "EL NOME DE USUARIO ES REQUERIDO";
        }
    }
}
?>


Con eso, si el usuario inserta su username era para ser muestro el mensaje dos veces, pero lo que pasa es que se mustra apenas una. La pagina ejecuta todo el codigo javascript de la funcion JSF (), incluso nos muestra el mensaje que se espera. Pero cuando va ejecutar el javascript interior al PHP, es como si encontrara algun error y no sé ejecuta nada después de usar el getElementById.


Alguién sabe como corrigir ese problema? No sé qué debo hacer para solucionarlo!

Lo siento lo tan extenso quedó ese mensaje, pero con eso creo que a cualquier persona quedará bastante claro lo que se esta pasando en el codigo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Codigo Javascript no funciona dentro del codigo PHP

Publicado por xve (5520 intervenciones) el 31/07/2013 12:03:26
Hola, haber si es este el problema...

Este código de javascript:
1
2
3
4
5
6
7
8
9
10
$usuario = $_POST['frmRegisterUN'];
        if ($usuario != "")
        {
            ?>
      <script>
            var error = document.getElementById("frmRegisterError");
            error.value = "OK. EL CODIGO FUNCIONA.";
            </script>
      <?php
        }

puede ser que cuando se envía al navegador el código javascript todavía no existe el código html con el id=frmRegisterError??

En que parte del código generas ese código html con el id=frmRegisterError?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Javascript no funciona dentro del codigo PHP

Publicado por Evair_Peterson (3 intervenciones) el 31/07/2013 20:22:17
Hola XVE. Gracias por contestarme...

Bueno, no creo que el error por el javascript no encontrar al codigo HTML con la ID frmRegisterError. Le digo eso porque frmRegisterError es un INPUT de un formulario que no es creado dinamicamente, sino ya está en el archivo original, luego no puede que sea ese el erro que se me esta pasando. El objetivo de esa funcion es hacer una validación que generara un mensaje en caso de que se encuentra algun error y luego debrá poner ese mensaje en el value de ese campo llamado frmRegisterError.

No entiendo porque no me funciona ese del frmRegisterError en ese modo, pues si luego lo sustituyo por un alert o cualquier otro comando me funciona muy bien, es solo el frmRegisterError que no funciona como deberia....

Agradezco su atencion.
Saludos desde Brasil, Evair.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Codigo Javascript no funciona dentro del codigo PHP

Publicado por xve (5520 intervenciones) el 01/08/2013 08:33:19
Ten en cuenta que el PHP se ejecuta en el servidor y el JS posteriormente en el navegador...
Que queires decir que el ya esta en el "archivo original"? el php se carga mediante ajax?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Codigo Javascript no funciona dentro del codigo PHP

Publicado por John Peter (1 intervención) el 09/12/2013 16:44:47
El problema con el firefox es cuando utilizas getElementById, prueba con:

var error = document.nombreformulario.frmRegisterUN.value;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar