2011-06-29 14 views
8

encuentro este código en W3Schools. Se trata de la validación de formularios con Javascript.validación de formularios con Javascript a PHP

Cuando el formato de correo mal cinta usuario, aparece una alerta es.

Cuando compruebo el código que veo en forma onsubmit="return validateForm();, así la función return false en caso de error.

Así que mi pregunta es cómo conseguir que el valor booleano de javascript para usar en PHP para escribir el mensaje de error en lugar del uso del cuadro de mensaje.

Este es mi código:

<html> 
<head> 
    <script type="text/javascript"> 
    function validateForm() 
    { 
    var x=document.forms["myForm"]["email"].value 
    var atpos=x.indexOf("@"); 
    var dotpos=x.lastIndexOf("."); 
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
     { 
     alert("Not a valid e-mail address"); 
     return false; 
     } 
    } 
    </script> 
    </head> 

    <body> 
    <form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post"> 
    Email: <input type="text" name="email"> 
    <input type="submit" value="Submit"> 
    </form> 
</body> 

</html> 

Gracias de antemano.

Ali

+3

W3Schools no es fiable: [Ver W3Fools] (http://w3fools.com/) – mc10

Respuesta

7

No se puede obtener el valor booleano de javascript. Lo que debes hacer es tener un div de error listo por adelantado. Algo como esto:

<body> 
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post"> 
Email: <input type="text" name="email"> 
<div id="error"></div> 
<input type="submit" value="Submit"> 
</form> 

Añádalo para ocultarlo. Luego, en su formulario de validación, use javascript para alterar el código HTML del error div.

if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
    { 
     document.getElementById("error").innerHTML="Not a valid e-mail address"; 
     return false; 
    } 

El "return false;" parte es decirle a la forma que no envíe. Como se menciona en otras respuestas, PHP y Javascript no interactúan. PHP es del lado del servidor, Javascript es del lado del cliente. No hablan entre ellos. Sin embargo, pueden modificar el HTML. Solo recuerde, Javascript siempre se ejecuta en el navegador. Entonces, si necesita enviar cosas a PHP, necesita usar AJAX para llamar a un script PHP del lado del servidor y enviar la información de esa manera.La mayoría de las veces, sin embargo, cuando usa Javascript, PHP no necesita la información, es el usuario. Entonces, usar Javascript para modificar el HTML hace el truco.

3

Fuera de usar AJAX, no puede. Recuerde que PHP es un lenguaje del lado del servidor, y que JavaScript se ejecuta en el cliente en el navegador. Para cuando PHP renderiza la página en el navegador, ya está procesando. Lo que necesita son dos niveles de validación: validación de JavaScript Y validación de PHP. ¿Por qué? Porque JavaScript se puede desactivar en el navegador. Eso lo hace inútil como medida de seguridad. La validación de JavaScript solo debe usarse como una forma de mejorar la experiencia del usuario.

Por último, no se vaya a w3schools. Una gran parte de su información no es válida (véase el sitio http://www.w3fools.com para obtener más información). En su lugar, use la red de desarrolladores de Mozilla: https://developer.mozilla.org/en-US/learn/

3

Lo más fácil es hacer la visualización en la función. Vuelva a colocar la alerta con algo como: -

document.getElementById ("ErrorMessage") innerHTML = "No es una dirección válida de correo electrónico ";.

También necesitará un DIV en su HTML con una identificación del mensaje de error.

6
if (..) 
{ 
    document.getElementByID('error').InnerHTML = "Not a valid e-mail address!"; 
    return false; 
} 
else 
{ 
    document.getElementByID('error').InnerHTML = ""; 
} 

y en su margen de beneficio añadido:

<span id="error"></span> 
3

yo no usaría PHP para esto.

<html> 
<head> 
<script type="text/javascript"> 
function validateForm() 
{ 
var x=document.forms["myForm"]["email"].value 
var atpos=x.indexOf("@"); 
var dotpos=x.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
    { 
    document.getElementById('errorMsg').style.display = 'block'; 
    return false; 
    } 
} 
</script> 
</head> 

<body> 
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post"> 
Email: <input type="text" name="email"> 
<input type="submit" value="Submit"> 
<div id="errorMsg" style="display: none;">Not valid email</div> 
</form> 
</body> 

</html> 

De esta manera no tendrá que volver a su servidor.

Cuestiones relacionadas