Foros del Web » Programando para Internet » Javascript »

No enviar datos de formulario si un campo ha sido llenado

Estas en el tema de No enviar datos de formulario si un campo ha sido llenado en el foro de Javascript en Foros del Web. Hola a todos! Tengo un duda en un script para un formulario de contacto; lo que quiero es NO enviar los datos del formulario si ...
  #1 (permalink)  
Antiguo 20/11/2009, 22:09
 
Fecha de Ingreso: febrero-2007
Mensajes: 51
Antigüedad: 17 años, 2 meses
Puntos: 1
No enviar datos de formulario si un campo ha sido llenado

Hola a todos!

Tengo un duda en un script para un formulario de contacto; lo que quiero es NO enviar los datos del formulario si un campo ha sido llenado.

Lo que sucede es que estoy tratando de evitar el Spam, para lo cual con CSS he creado un campo invisible, si este campo es llenado por un robot, significa que es Spam y no enviará el mensaje. Hasta aca todo correcto, lo que no se es que poner exactamente en el script.

Mi código HTML es el siguiente:
<form>
<label>Name:</label>
<input name="name" type="text" />
<label>Email:</label>
<input name="email" type="text" />
<input class="nospam" name="spam" type="text" />
<input type="submit" value="Submit Form" />
</form>

y el CSS es este:
.nospam {display:none}

Para hacer campos obligatorios uso lo siguiente:

<script type="text/javascript">
<!--
function validacion() {
var resultado = true;

nam = document.forms[0].name;
lna = document.getElementById('lname');
ema = document.forms[0].email;
lem = document.getElementById('lemail');


if( nam.value == null || nam.value.length == 0 || /^\s+$/.test(nam.value) ) {
nam.style.backgroundColor="#FFFFEE";
lna.innerHTML = "Por favor coloque su nombre";
resultado=false;
} else {
nam.style.backgroundColor="#fff";
}


if( !(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(ema.value)) ) {
ema.style.backgroundColor="#FFFFEE";
lem.innerHTML = "Por favor coloque su email";
resultado=false;
} else {
ema.style.backgroundColor="#fff";
lem.innertHTML = "";
}


if (resultado == false) {
return false;
} else {
return true;
}
}
// -->
</script>


Muchas gracias de antemano por su ayuda!
  #2 (permalink)  
Antiguo 20/11/2009, 23:16
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: No enviar datos de formulario si un campo ha sido llenado

Hola!

Mira, para hacer eso tenes dos formas, una con JavaScript y otra con PHP, aunque el formulario, al hacerlo con PHP, ya fue enviado.

1) JavaScript:

1.a)

Código PHP:
if(document.getElementById('campoQueNo').value)    {
    return 
false;

1.b)

Código PHP:
if(document.formulario.campoQueNo.value!="")    {
    return 
false;

2) PHP

Código PHP:
if(trim($_POST['campoQueNo'])!="")    {
    if(
trim($_SERVER['HTTP_REFERER']!=""))    {
        
header('Location: '$_SERVER['HTTP_REFERER']);
        
/*o con JavaScript seria: echo '<script> window.location = "'.$_SERVER['HTTP_REFERER'].'" </script>*/
        
exit();
    }else    {
        exit();
    }
}else    {
    
//PROCESAR FORMULARIO


A mi concepto, preferiria hacerlo con PHP. Me resulta mas fiable. Porque puede que use algun programita para deshabilitar JavaScript.

Espero que te sirva!

Saludos!
  #3 (permalink)  
Antiguo 20/11/2009, 23:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: No enviar datos de formulario si un campo ha sido llenado

Uhhhh... Que despistado.

En el header('Location:' me falto un "." entre el cierre de comilla simple y el array $_SERVER

Saludos!
  #4 (permalink)  
Antiguo 21/11/2009, 18:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 51
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: No enviar datos de formulario si un campo ha sido llenado

Estefano, eres un capo total!

Ayer me he pasado horas tratando de solucionar eso, y ahora con tu script lo solucioné en 2 minutos.

Muchas gracias por tu ayuda!
  #5 (permalink)  
Antiguo 23/11/2009, 08:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: No enviar datos de formulario si un campo ha sido llenado

Me alegro que te hay servido!

Saludos!
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:03.