También tenía una duda. Cómo se hace para que cuando el usuario tenga desahabilitado JS solamente así se valide desde el script en PHP, y cómo podría hacerle para meter el script y el formulario en el mismo archivo y que sólo se ejecute dicho script cuando el archivo JS haga la petición al servidor y no cuando se cargue la página.
Aquí están los códigos:
Formulario
Código HTML:
<h2>Contáctame</h2> <tr> <fieldset id="forma"> <form action="" method="post" id="fcontacto"> <script src="../microproceso/modulos/funciones.js" language="javascript"></script> <br/> <table id="contacto"> <tr> <td>Nombre:*</td> <td><input type="text" class="textbox" name="nombre" id="foNombre" value=""></input></td> <td id="errorNom" class="hiddenWarning">Introduce un Nombre Válido.</td> </tr> <tr> <td>Correo:*</td> <td><input type="text" class="textbox" name="correo" id="foCorreo" value=""></input></td> <td id="errorCor" class="hiddenWarning">Introduce un Nombre Válido.</td> </tr> <tr> <td>Asunto:</td> <td><input type="text" class="textbox" name="asunto" id="foAsunto" value=""></input></td> <td id="errorAsu" class="hiddenWarning">Introduce un Nombre Válido.</td> </tr> </table> Mensaje:* <textarea class="textarea" name="mensaje" id="foMensaje"></textarea> <div id="errorMen" class="hiddenWarning">El mensaje no puede estar vacío.</div> <input type="submit" name="submit" id="submit" class="submit" value="Enviar"> <div id="error"></div> </form> </fieldset><div class="hidden" id="resultados">Gracias por enviar tu mensaje, te responderé lo más pronto posible.</div>
Código:
Script PHPvar nombre, correo, asunto, mensaje, error, flag, errorNom, errorCor, errorMen; addEvent(window,'load',inicializarEventos,false); function inicializarEventos() { var ref = document.getElementById('fcontacto'); addEvent(ref,'submit',enviarDatos,false); } function validar() { nombre = document.getElementById('foNombre').value; correo = document.getElementById('foCorreo').value; asunto = document.getElementById('foAsunto').value; mensaje = document.getElementById('foMensaje').value; error = document.getElementById('error'); errorNom = document.getElementById('errorNom'); errorCor = document.getElementById('errorCor'); errorMen = document.getElementById('errorMen'); flag = true; var form = document.getElementById('fcontacto'); if(nombre == '') { errorNom.style.display = 'inline'; document.getElementById('foNombre').focus(); if(flag) flag = !flag; } else { errorNom.style.display = 'none'; } if(correo == '') { errorCor.style.display = 'inline'; document.getElementById('foCorreo').focus(); if(flag) flag = !flag; } else { errorCor.style.display = 'none'; } if(mensaje == '') { errorMen.style.display = 'inline'; document.getElementById('foMensaje').focus(); if(flag) flag = !flag; } else { errorMen.style.display = 'none'; } if(flag) return true; else return false; } function enviarDatos(e) { if(window.event) window.event.returnValue = false; else if(e) e.preventDefault(); enviarFormulario(); } function retornarDatos() { var cad=''; cad = 'nombre='+encodeURIComponent(nombre)+'&correo='+encodeURIComponent(correo) +'&asunto='+encodeURIComponent(asunto)+'&mensaje='+encodeURIComponent(mensaje); return cad; } var conexion; function enviarFormulario() { conexion = crearXMLHttpRequest(); conexion.onreadystatechange = procesarEventos; conexion.open('POST','modulos/contacto.php',true); conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); conexion.send(retornarDatos()); } function procesarEventos() { if(conexion.readyState == 4) { if(validar()) { var resultados = document.getElementById("resultados"); var forma = document.getElementById("forma"); forma.style.display = 'none'; resultados.style.display = 'inline'; } } } /*------------------------------ FUNCIONES COMUNES ------------------------------*/ function addEvent(elemento,nomevento,funcion,captura) { if(elemento.attachEvent) { elemento.attachEvent('on' + nomevento,funcion); return true; } else { if(elemento.addEventListener) { elemento.addEventListener(nomevento,funcion,captura); return true; } else return false; } } function crearXMLHttpRequest() { var xmlHttp = null; if(window.ActiveXObject) xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); else if(window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); return xmlHttp; }
Código PHP:
<?php
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$_REQUEST['nombre']."<".$_REQUEST['correo'].">\r\n";
$destinatario = "[email protected]";
$asunto = "[MicroProceso]".$_REQUEST['asunto'];
$cuerpo = $_REQUEST['mensaje'];
mail($destinatario,$asunto,$cuerpo,$headers);
?>
Código:
Muchas Gracias! .hidden{display: none;} .hiddenWarning{display:none; color:#f00;} input.textbox{margin-right: 5px;border:#ccc 1px solid;background:#f9f9f9;font:1em Tahoma, Verdana Futura, Arial, Serif;padding:2px 0 0 3px;width:200px;} textarea{width: 100%;height: 20em;border: 1px solid #ccc;background:#f9f9f9;font:1em Tahoma, Verdana, Arial, Serif;} input.textbox:focus, textarea:focus{background:#fff;border:#999 1px solid;} input.submit{float: right;margin: 10px 0 0 0;} fieldset{border: #ccc 1px double; width:100%;}