Hola a todos nuevamente...
Tengo un nuevo problema que es resultado de todo lo que estábamos discutiendo aquí antes...
Como he dicho en mi último mensaje, usé la forma que me propuso
vosk para poder rellenar el value del input como quisiera antes. Y eso me funcionó muy bien en todos los navegadores, excepto en el Mozilla Firefox.
Me cuesta creerlo, pero incluso en la desgracia que es el IE me funciona bien! Pero en Firefox no!
Asi que que decidi probar nuevamente la manera que me propuso
edward1994, que como también me dijo
vosk era para funcionar bastante bien. Incluso creo que con ese modo me quedaria un tanto más "limpio" el codigo, ya que podria hacerlo en gran parte de modo dinamico. Aunque me funcionó bastante bien el primer modo, creo que me quedó demasiado lleno el codigo.
Igual que antes, aún no logré hacer funcionarme el segundo modo, mexclando el PHP con javascript...
La pagina funciona así: Al hacer click en el botón REGISTRAR, se llama la función javascript JSF (), que es la responsable por la primera validación. Si esta todo OK, esa le da el submit en el formulario que ejecutar la funcion PHP enviar () que es la responsable por la segunda validación... Y si nuevamente esta todo OK, va hacer el login del usuario normal... Para eso, hice unas cuantas pruebas con codigos más simples como ese:
Código HTML:
<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:
<script type="text/javascript">
function JSF ()
{
document.getElementById("frmRegister").submit();
}
</script>
Código PHP:
<?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:
<?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:
<script type="text/javascript">
function JSF ()
{
var error = document.getElementById("frmRegisterUN").value;
alert (error);
document.getElementById("frmRegister").submit();
}
</script>
Código PHP:
<?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 internet 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...