Foros del Web » Programando para Internet » Javascript »

formulario contacto con checkbox en html y validacion en ajax

Estas en el tema de formulario contacto con checkbox en html y validacion en ajax en el foro de Javascript en Foros del Web. Buenas tardes a tod@s, soy novato en ajax y tengo un formulario html y php con validacion ajax y necesito añadirle un checkbox, el problema ...
  #1 (permalink)  
Antiguo 05/02/2012, 13:32
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
formulario contacto con checkbox en html y validacion en ajax

Buenas tardes a tod@s, soy novato en ajax y tengo un formulario html y php con validacion ajax y necesito añadirle un checkbox, el problema viene cuando quiero que lo valide y no se como hacerlo, espero me podais ayudar, gracias.
Html:<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="estilo2.css"/>
<script type="text/javascript" src="valida.js"></script>
</head>
<body>
<div class="marco">
<table id="tablacuerpo" class="tablacuerpo" style="background-image:url(images/contactar.jpg); background-position:center 10; background-repeat:no-repeat">
<tr>
<th width="6%" height="93" scope="col">&nbsp;</th>
<th width="62%" scope="col">&nbsp;</th>
<th width="32%" scope="col">&nbsp;</th>
</tr>
<tr>
<th height="304" scope="col">&nbsp;</th>
<th align="left" valign="top" scope="col"><div id="formContenedor">
<form id="formulario">
<div id="transparencia">
<div id="transparenciaMensaje"></div>
</div>
<table>
<tbody>
<tr>
<td width="76" class="label">Nombre:</td>
<td width="238" class="campo"><input type="text" class="inputNormal" id="inputNombre" size="30"></td>
<td width="70" class="ayuda"><img src="images/ayuda.gif" onMouseOver="muestraAyuda(event, 'Nombre')"></td>
</tr>
<tr>
<td class="label">Empresa:</td>
<td class="campo"><input type="text" class="inputNormal" id="inputEmpresa" size="30"></td>
<td class="ayuda"><img src="images/ayuda.gif" onMouseOver="muestraAyuda(event, 'Empresa')"></td>
</tr>
<tr>
<td class="label">Teléfono:</td>
<td class="campo"><input type="text" class="inputNormal" id="inputTelefono" size="30"></td>
<td class="ayuda"><img src="images/ayuda.gif" onMouseOver="muestraAyuda(event, 'Telefono')"></td>
</tr>
<tr>
<td class="label">Mail:</td>
<td class="campo"><input type="text" class="inputNormal" id="inputCorreo" size="30"></td>
<td class="ayuda"><img src="images/ayuda.gif" onMouseOver="muestraAyuda(event, 'Correo')"></td>
</tr>
<tr>
<td class="label">Comentarios:</td>
<td class="campo"><textarea name="inputComentario" cols="30" rows="6" class="inputNormal" id="inputComentario"></textarea></td>
<td class="ayuda"><img src="images/ayuda.gif" onMouseOver="muestraAyuda(event, 'Comentario')"></td>
</tr>
</tbody>
</table>
<br>
<div align="center"><br>
<button id="botonEnviar" onClick="validaForm()" type="button">Enviar</button>
<button type="reset">Borrar</button>
</div>
</form>
</div></th>
<th align="center" valign="top" scope="col">&nbsp;</th>
</tr>
</table>
</div>
<!-- Capa para mostrar los mensajes de ayuda al presionar los iconos correspondientes -->
<div id="mensajesAyuda">
<div id="ayudaTitulo"></div>
<div id="ayudaTexto"></div>
</div>
</body>
</html>

valida.js:// Variables para setear
onload=function()
{
cAyuda=document.getElementById("mensajesAyuda");
cNombre=document.getElementById("ayudaTitulo");
cTex=document.getElementById("ayudaTexto");
divTransparente=document.getElementById("transpare ncia");
divMensaje=document.getElementById("transparenciaM ensaje");
form=document.getElementById("formulario");
urlDestino="mail.php";

claseNormal="input";
claseError="inputError";

ayuda=new Array();
ayuda["Nombre"]="Ingresa tu nombre. De 4 a 50 caracteres. OBLIGATORIO";
ayuda["Empresa"]="Ingresa el nombre de tu Empresa. De 4 a 50 caracteres.";
ayuda["Telefono"]="Ingresa un telefono de contacto. OBLIGATORIO";
ayuda["Correo"]="Ingresa un e-mail valido. OBLIGATORIO";
ayuda["Comentario"]="Ingresa tus comentarios. De 5 a 500 caracteres. OBLIGATORIO";

preCarga("ok.gif", "loading.gif", "error.gif");
}

function preCarga()
{
imagenes=new Array();
for(i=0; i<arguments.length; i++)
{
imagenes[i]=document.createElement("img");
imagenes[i].src=arguments[i];
}
}

function nuevoAjax()
{
var xmlhttp=false;
try
{
// No IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}

function limpiaForm()
{
for(i=0; i<=4; i++)
{
form.elements[i].className=claseNormal;
}
document.getElementById("inputComentario").classNa me=claseNormal;
}

function campoError(campo)
{
campo.className=claseError;
error=1;
}

function ocultaMensaje()
{
divTransparente.style.display="none";
}

function muestraMensaje(mensaje)
{
divMensaje.innerHTML=mensaje;
divTransparente.style.display="block";
}

function eliminaEspacios(cadena)
{
// Funcion para eliminar espacios delante y detras de cada cadena
while(cadena.charAt(cadena.length-1)==" ") cadena=cadena.substr(0, cadena.length-1);
while(cadena.charAt(0)==" ") cadena=cadena.substr(1, cadena.length-1);
return cadena;
}

function validaLongitud(valor, permiteVacio, minimo, maximo)
{
var cantCar=valor.length;
if(valor=="")
{
if(permiteVacio) return true;
else return false;
}
else
{
if(cantCar>=minimo && cantCar<=maximo) return true;
else return false;
}
}

function validaCorreo(valor)
{
var reg=/(^[a-zA-Z0-9._-]{1,30})@([a-zA-Z0-9.-]{1,30}$)/;
if(reg.test(valor)) return true;
else return false;
}

function validaForm()
{
limpiaForm();
error=0;

var nombre=eliminaEspacios(form.inputNombre.value);
var empresa=eliminaEspacios(form.inputEmpresa.value);
var telefono=eliminaEspacios(form.inputTelefono.value) ;
var correo=eliminaEspacios(form.inputCorreo.value);
var comentarios=eliminaEspacios(form.inputComentario.v alue);

if(!validaLongitud(nombre, 0, 4, 50)) campoError(form.inputNombre);
if(!validaLongitud(empresa, 1, 4, 50)) campoError(form.inputEmpresa);
if(!validaLongitud(telefono, 0, 4, 50)) campoError(form.inputTelefono);
if(!validaCorreo(correo)) campoError(form.inputCorreo);
if(!validaLongitud(comentarios, 0, 5, 500)) campoError(form.inputComentario);

if(error==1)
{
var texto="<img src='error.gif' alt='Error'><br><br>Error: revise los campos en rojo.<br><br><button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";
muestraMensaje(texto);
}
else
{
var texto="<img src='loading.gif' alt='Enviando'><br>Enviando. Por favor espere.<br><br><button style='width:60px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ocultar</button>";
muestraMensaje(texto);

var ajax=nuevoAjax();
ajax.open("POST", urlDestino, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("nombre="+nombre+"&empresa="+empresa+"&t elefono="+telefono+"&correo="+correo+"&comentarios ="+comentarios);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
var respuesta=ajax.responseText;
if(respuesta=="OK")
{
var texto="<img src='ok.gif' alt='Ok'><br>Gracias por su mensaje.<br>Le responderemos a la brevedad.<br><br><button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";
}
else var texto="<img src='error.gif'><br><br>Error: intente más tarde.<br><br><button style='width:45px; height:18px; font-size:10px;' onClick='ocultaMensaje()' type='button'>Ok</button>";

muestraMensaje(texto);
}
}
}
}

// Mensajes de ayuda

if(navigator.userAgent.indexOf("MSIE")>=0) navegador=0;
else navegador=1;

function colocaAyuda(event)
{
if(navegador==0)
{
var corX=window.event.clientX+document.documentElement .scrollLeft;
var corY=window.event.clientY+document.documentElement .scrollTop;
}
else
{
var corX=event.clientX+window.scrollX;
var corY=event.clientY+window.scrollY;
}
cAyuda.style.top=corY+20+"px";
cAyuda.style.left=corX+15+"px";
}

function ocultaAyuda()
{
cAyuda.style.display="none";
if(navegador==0)
{
document.detachEvent("onmousemove", colocaAyuda);
document.detachEvent("onmouseout", ocultaAyuda);
}
else
{
document.removeEventListener("mousemove", colocaAyuda, true);
document.removeEventListener("mouseout", ocultaAyuda, true);
}
}

function muestraAyuda(event, campo)
{
colocaAyuda(event);

if(navegador==0)
{
document.attachEvent("onmousemove", colocaAyuda);
document.attachEvent("onmouseout", ocultaAyuda);
}
else
{
document.addEventListener("mousemove", colocaAyuda, true);
document.addEventListener("mouseout", ocultaAyuda, true);
}

cNombre.innerHTML=campo;
cTex.innerHTML=ayuda[campo];
cAyuda.style.display="block";
}
  #2 (permalink)  
Antiguo 05/02/2012, 15:20
 
Fecha de Ingreso: septiembre-2011
Mensajes: 52
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: formulario contacto con checkbox en html y validacion en ajax

Basicamente un input se valida en php así:

Código PHP:
Ver original
  1. <?php
  2. if (isset ($_POST['nombreDelInputCheck'] {
  3.   //EL INPUT CHEK FUE PRESIONADO, PROCEDEMOS
  4. }
  5. else {
  6.   //EL INPUT NO HA SIDO PRESIONADO
  7. }
  8. ?>

Y en Javascript, algo así:
Código Javascript:
Ver original
  1. function checkMe(obj){
  2.   if ( obj.box.cheked ){
  3.     //PROCEDEMOS, ESTA VALIDADO
  4.   }
  5.   else{
  6.     //NO SE HA PRECIONADO, RETORNAMOS FALSO Y TERMINA LA EJECUCIÓN
  7.     return false;
  8.   }
  9. }

Entonces, lo que hicimos alla arriba lo podemos acceder con un form valido para esa funciona:

Código HTML:
Ver original
  1. <form onSubmit="checkMe(this)" action="javascript:void(0)" <!--ESTO ES PARA QUE LA PAGINA NO SE RESETEE, MODIFICALO A LA PAGINA EN LA CUAL EL PHP RECIBE EL FORMULARIO, SI ES CON AJAX DEJALO ASÍ-->>
  2.   <input type="checkbox" name="box" value="Algo"> Algo
  3.   <input type="submit" value="comprobar check">
  4. </form>

OJALA TE SIRVA, una brazo, cualquier cosa, cita comentario y corregimos errores.

Última edición por tomirammstein; 05/02/2012 a las 15:22 Razón: Olvidé poner el input submit
  #3 (permalink)  
Antiguo 08/02/2012, 09:48
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: formulario contacto con checkbox en html y validacion en ajax

Gracias tomirammstein, justo lo que buscaba, solucionado.

Etiquetas: ajax, contacto, formulario, funcion, html, input, js, php, botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:02.