script, para que no te manden formularios en blanco

Hola a todos
pongo está pequeña aportación
aclaro que no es del todo mia
(no soy tan buena como para crear algo asi)

pero la he modificado en base a varias páginas visitadas
espero a alguien le sirva

creo que se me olvida aclarar para que sirve

Esto se agrega, para evitar que alguien curioso, le de click a enviar a un formulario, y no nos mande nada

jajajja

hasta aqui supongo que ya tienes tu formulario hecho, y que ya probaste que funciona, de lo contrario no servira de nada OK??

Tambien tu formulario debe tener un name por ejemplo asi:

<form action="pagina.php" method="post" name="frm">

ok, pues en donde tienes el boton de enviar (del formulario)
tendrás algo asi:

<input type="submit" name="submit" value="Enviar" />

bueno, pues ahora le diremos que al darle clik en enviar, primero cheque quue todos los campos esten llenos, de lo contrario nos mande un alerta
asi:

<input type="button" value="Enviar" onclick="valida_envia()" />

y ahora pongo el script, que ha de hacer el trabajo pesado
este lo podemos copiar en cualquier parte de la página web
ya sea entre <body> y </body> o entre <head> y </head>


<script language="JavaScript" type="text/JavaScript">

function valida_envia(){
if(document.frm.nombre.value == "") {
alert("Por favor indique Su Nombre");
document.frm.nombre.focus();
return 0;
}

if(document.frm.poblacion.value == "") {
alert("Por favor indique Su Ciudad");
document.frm.poblacion.focus();
return 0;
}


if(document.frm.email.value == "") {
alert("Por favor indica un E-Mail valido, para enviarle su respuesta");
document.frm.email.focus();
return 0;
}

if(document.frm.texto.value == "") {
alert("Por favor indica un Mensaje");
document.frm.texto.focus();
return 0;
}



alert("Muchas gracias por enviar el formulario");
document.frm.submit();
return true;
}
</script>

donde en rojo está puesto el nombre del formulario
y en verde el nombre del campo que queremos sea obligatorio
en este caso son:

nombre, ciudad, email y mensaje



yy, a peticion de ustedes jej
busque y rebusque, hasta encontrar que tampoco nos puedan mandar espacios en blanco (ya que la barra espaciadora tambien cuenta como caracter)

asi que encontrè esto

onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"

todo eso se pone aqui

<input name="email" type="text" id="

email" maxlength="20" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/>

en rojo, lo que hace es evitar que nos manden puros espacios en blanco

saludos
Está muy bien, y seguro que le resulta útil a más de uno, con todos los que andan buscando hacer formularios.
Yo lo utilizaré en mi próximo formulario, porque no me acuerdo como lo hacía yo, jeje :lol:
Gracias Yaneth por tu aportación. Es muy útil.

Al principio no me funcionaba 100%. Cuando me avisaba de que tenía que indicar un nombre pulsaba en aceptar del mismo mensaje de aviso y acto seguido me mandaba el formulario vacío. Se ha solucionado cuando he revisado el nombre de las variables. A veces hay que ir probando sobre todo cuando eres novato en esto como yo.

Un saludo!

Edito:
Una pregunta, tengo un formulario con los campos: nombre, telefono, email y consulta. Bien, pues dejo en la función del código que has puesto nombre y consulta igual. Pero me gustaría hacer que telefono e email sólo fueran obligatorios uno de los dos. Es decir, estando vacío telefono e email saldría un alert "por favor introduzca un teléfono o email de contacto." pero en cuanto exista uno de los dos campos llenos ya no pida nada más. Si es mucho lío lo siento. Gracias de antemano.
mmmmm

interesante......

si gustas..... lo intentamos ok???????

:wink: :wink:
Por mí perfecto. Ya me funciona el código que pusiste y con eso me conformo solo que el formulario de mi página está pensado para clientes que no tengan una cuenta de correo o no estén muy familiarizados con la informática entonces si conseguimos lo que te propongo nada más sería necesario que el cliente aportara un teléfono y en el caso de preferir no facilitarlo pues ya se le preguntaría por el email que al fin al cabo sin ninguno de estos datos la consulta a la empresa sería de un fantasma.

Espero pacientemente. Gracias por tu tiempo.
Hola

al fin, y despues de muchas pruebas lo logrè

si gustas probarlo està en

http://www.reparacionderines.com/ayuda2.html

y el codigo està aqui

<script language="JavaScript" type="text/JavaScript">

function valida_envia(){
if(document.frm2.nombre.value == "") {
alert("Por favor indique Su Nombre");
document.frm2.nombre.focus();
return 0;
}

if(document.frm2.email.value == "" && document.frm2.telefono.value == ""){
alert("Por favor indique Su EMAIL o su TELEFONO");
document.frm2.email.focus();
return 0;
}


alert("Muchas gracias por enviar el formulario");
document.frm2.submit();
return true;
}

saludos
Buen trabajo Yaneth. Después de varios intentos no daba con el lenguaje y nada más probar el tuyo ha funcionado a la primera. Visto escrito parece simple pero hay que saber.

Valoro tu amabilidad y tu tiempo. Me has ayudado a mejorar mi web. Confío en que le sirva de ayuda a más personas.

Por cierto, me ha impresionado lo rápida que has sido. ¡Mil gracias! y ánimo con tus aportaciones. Estaré atento por si puedo compartir algo interesante.
Hola Yaneth.... En primer lugar, gracias por tu desinteresado aporte...
Te cuento, tengo una página con un formulario ya creado y como es obvio este "valida, o sea se asegura, de que el internauta proporcione la información esperada en cada campo" y lo hace bien. Sin embargo lamentablemente hay muchos, pero muchísimos internautas que no entiendo con que fin -excepto el de molestar- se dedican a enviar los Formularios en Blanco. Me está ocurriendo exactamente esto, que cuando el formulario le pide que indique un dato, en vez de tipear algo, sólo pulsan la barra espaciadora del teclado y como informáticamente hablando, esa acción es también un caracter alfanumérico, pasa la prueba de la validación toda vez que no se tipeó nada y por lo tanto el formulario termina siendo procesado y enviado en blanco. Entonces, evidentemente hay que agregarle algún srcipt adicional que no permita o acepte que el Formulario sea llenado pulsando la barra espaciadora. Tu, ¿por casualidad sabes como lograrlo? Desde ya muchas gracias.
mm seguro que si debe haber algo de eso

pero... si el visitante, igual no desea mandarte nada
y no le dejas usar espacios en blanco
`pues te pondra cosas como esta

slkdjsalsjkfñasdfjkl

asi que... por mmas obstaculos que pongamos, si lo desean pueden hacer sus "maldades" lo del scrpt para mandar espacios en blanco es mas que nada para.... evitar errores de dedo, y que den click en enviar accidentalmente

saludos
Hola Yaneth...

Me imágine que recibiría una respuesta como la tuya... Incluso pensé, antes de presentar la situación, ser más específico y detallista pero me dije a mi mismo, mmm quizás detalle tanto lo que estoy intentando lograr que en vez de que me entienda me termine respondiendo ¿qué es lo que quieres hacer realmente?. Que lástima pues por ser más simple en mi presentación al final terminé recibiendo una respuesta que supuse que sería tal cual la tuya. Pero ahora seré más claro e iré directamente a lo que pretendo llegar. La idea es que cuando el internauta comience a llenar cada campo del formulario se haga una validación tal "que le impida empezar a proporcionar los datos pulsando la barra espaciadora" ¿Porqué? Muy simple, en primer lugar porque jamás va a existir el nombre, descripción, identificación, etc. de algo que empiece con un caracter en blanco, eso no se da en ningún idoma del mundo... En segundo lugar porque cuando él quiera hacer eso, si es que lo hace con "mala intención" se dará cuenta en seguida que eso no se puede hacer. Tengo dos clientes que les hice su sitio web con Formulario y ambos han recibido ya varias veces Formularios en Blanco y me recriminan por esto. No entienden que se hace por maldad y ambos me dicen: ¿pero como es posible que no escriban nada, ni siquiera estupideces? Es decir ellos preferirían recibir jeroglíficos como los que tu usastes de ejemplo antes de recibir NADA. De lo anterior se desprende entonces que este objetivo debo lograrlo si o si. Por favor si no sabes como lograr los scripts de esto dímelo y veo por otro lado, OK
Sin perjuicio de lo anterior, agradezco tu preocupación y respuesta acerca del tema.
implemente el que tienes con las siguientes condiciones

para año , mes, dia , hora , minutos de un formulario el formato debe ser en el mes 01, 02, o 03 etc, igualmente en los dias pero cuando ingreso a partir del 08 me sale el alerta de mes incorrecto que puede estar pasando me estoy dando golpe y naaa :cry:


mira el codigo:




<html>
<head>
<title>Modificar Fecha EXE Movimientos</title>
<meta http-equiv="Content-Type" content="text/html"; charset="iso-8859-1" />
<link rel='stylesheet' type='text/css' href='style.css' />
<script language="JavaScript">
var no_digito = /\D/g;
<!-- function para que no me deje ingresar caracteres
function mis_datos(){
var key=window.event.keyCode;
if (key < 48 || key > 57){
window.event.keyCode=0;
}}


function valida_envia(){



if(document.formulario.jus.value == "" ) {
alert("Por favor ingrese la justificación");
document.formulario.jus.focus();
return 0;
}

if(document.formulario.ano.value == "" || parseInt(document.formulario.ano.value) < 2005) {
alert("Año incorrecto");
document.formulario.ano.focus();
return 0;
}

if(document.formulario.mes.value == "" || parseInt(document.formulario.mes.value)< 1 || parseInt(document.formulario.mes.value) > 12 ) {
alert("Mes incorrecto");
document.formulario.mes.focus();
return 0;
}

if(document.formulario.dia.value == "" || parseInt(document.formulario.dia.value)< 1 || parseInt(document.formulario.dia.value ) > 31) {
alert("dia Incorrecto");
document.formulario.dia.focus();
return 0;
}

if(document.formulario.hor.value == "" || parseInt(document.formulario.hor.value) > 24 ) {
alert("Hora incorrecta1");
document.formulario.hor.focus();
return 0;
}

if(document.formulario.min.value == "" || parseInt(document.formulario.min.value) > 59 ) {
alert("Hora incorrecta2");
document.formulario.min.focus();
return 0;
}


if(document.formulario.mes.value.length != 2 || document.formulario.min.value.length != 2 || document.formulario.hor.value.length != 2 || document.formulario.dia.value.length != 2)
{

alert("Incorrecto");
document.formulario.mes.focus();
return 0;



}


document.formulario.submit();
return true;
}
</script>
</head>

<body>





<table width="50%" border="0" align="center">
<tr>
<td><div align="center"><H5>INGRESE NUEVOS DATOS</H5></div></td>
</tr>
<tr>
<td><form action="GuardaFechaExeMov.php" method="post" name="formulario" id="formulario">

<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="">
<tr><td> <input type="hidden" name="ListaIdMovs" value="<? echo $ListaIdMovs;?>">
<input type="hidden" name="cnt" value="<? echo $cnt;?>">
<input type="hidden" name="mov" value="<? echo $mov;?>">
<input type="hidden" name="tipoMov" value="<? echo $tipoMov;?>">
<input type="hidden" name="est" value="<? echo $est;?>">
<input type="hidden" name="long" value="<? echo $long;?>">
<input type="hidden" name="tipoOrd" value="<? echo $tipoOrd;?>">
<input type="hidden" name="refOrd" value="<? echo $refOrd;?>">
</td>
</tr>
<tr>
<td>Fecha</td>
<td colspan="2"><input name="ano" type="text" size="3" maxlength="4" onkeyup="this.value = this.value.replace(no_digito, '')"value="<? echo Date(Y)?>">/
<input name="mes" type="text" size="1" maxlength="2"onkeyup="this.value = this.value.replace(no_digito, '')" value="<? echo Date(m)?>">/
<input name="dia" type="text" size="1" maxlength="2" onkeyup="this.value = this.value.replace(no_digito, '')"value="<? echo Date(d)?>">
</td>
</tr>
<tr>
<td>Hora</td>
<td colspan="2"><input name="hor" type="text" size="1" maxlength="2" onkeyup="this.value = this.value.replace(no_digito, '')"value="<? echo Date(H)?>">:
<input name="min" type="text" size="1" maxlength="2" onkeyup="this.value = this.value.replace(no_digito, '')"value="00">

</td>
</tr>
<td>Justificacion</td>
<td colspan="2"><input name="jus" type="text" size="35" maxlength="40" value="Error del Distribuidor">

</td>
</tr>
<tr>
<td></td>
<td><input type="button" name="Submit5" onclick="valida_envia()" value="Actualizar!"></td>

<td><input type="reset" name="Submit6" value="Limpiar"></td>
</tr>
</table>
</form></td>
</tr>
</table>
<?
}
hola

Nicklord
sigues ahi??????

sorry, que no habia visto este tema :oops:
hasta que...... me està llegando correos en blanco jajajajajaja
del que puse como ejemplo aqui :wink:

ok, la explicacion que me diste me parece perfectisima
y seguro que algo hay para eso

ahora.... solo dime algo
ya lo tienes???????
de lo contrario, pongo manos a la obra jeje

saludos
hola

mss_lobaton85:

ya subiste tu formulario??????

dame la url para verlo en vivo y a todo color jejeje
tal vez demos con el fallo

saludos
Bueno yo tengo algunos formularios en mis web, y casi no uso javascript por la simple razon de que si te mandan un correo en blanco es porque estan jugando solamente, y si es asi la intencion es molestar nada mas, yo prefiero validar todo en el php, porque el javascript se puede desabilitar y enviar correos en blanco, mejor validado con php, el usuario no podra vurlar las validaciones, ademas de que no caeria mal una imagen antispam.
si, eso mismo pienso yo

solo que.......me incomoda un poco, que...por cada fallo
me mande a otra pàgina

no muestra alertas asi como el java

o si???????? :roll:
Asi es,php al ser un lenguaje de parte del servidor solo podria mostrar una alaerta despues de ser enviado el formulario y no antes, pero no necesariamente tiene que enviarte a paginas diferentes todo se puede hacer en el mismo archivo, Pero si algun dato esta mal escrito, es un inconveniente que al regresar al formulario tendra que llenarlo otra vez. Pero es mas seguro, aunque si quieres mas seguridad ueden emplear ambos, tanto comprobacion con javascript y en el php, asi tendrias mas seguridad, y evitar los correos en blanco.
pues si.... la verdad
yo no tengo problema con eso

al ser mi pàgina una web comercial, es minimo por no decir nulo
los correo que me llegan en blanco

aunque... como entretenimiento y reto, no me cae nada mal intentarlo jejeje

llevo varios dias dandole vuelta al asunto

:roll:
Si, entiendo que esto se trata de aprender, voy hacer unos ejemplos de formularios alamejor y te sirve alguno, de entrada te digo Yaneth que tu formulario web es muy vulnerable ha ataques y puede ser usado para enviar spam a correos de cualquier dominio. aunque no he visto el php, puedo asegurar que carece de seguridad.
Pues sugerencias para tu formulario, quita la direccion de correo que tienes en forma oculta, si es la direccion a donde van dirigidos los correos es una vulnerabilidad, ya que cambiandola por cualquier otra se pueden enviar correos a cuelquier direccion, valida tanto javascript como en php asi no correras ningun riesgo, agrega una imagen antispam, aqui en el foro creo que se publico un script para eso, pero lo probe y siempre generaba la misma imagen por lo cual no sirve. mira este formulario simple y sensillo validado en php todo en un solo archivo: http://sitiosmagdalena.net/pruebas/mail.php

y este otro validado tanto en php como en javascript: http://sitiosmagdalena.net/pruebas/javascript.php
Gracias ya lo corregi tenia un problema con el parse int pero tengo una duda como soy nueva en cuestiones de foros como hago para subir mi script???
Hola Yaneth....

Ciertamente me haz sorprendido pues pasó el tiempo y como vi que no obtenía respuesta pensé (y de nuevo me equivoqué contigo) mmm... se ve que ni miró mi contrarrespuesta y mucho menos entonces la va a atender....

Sin embargo noto que sí viste mi mensaje y que además estás dispuesta a darme una manito pero no te preocupes ya solucioné el problema, pues obtuve un Formulario no específicamente como lo que yo quería (era mucho más escueto) pero pese a mis nulos conocimientos de Java Script y de PHP (usa estos dos tipos de programas) he logrado modificarlo y obtener un Formulario bastante completo como yo quería.

No tengo claro si acá se puede poner enlaces externos, si es así y me lo permiten haré referencia a la URL del sitio respectivo para que lo veas.

Yaneth, muchas gracias por tu preocupación y por el tiempo que destinas desinteresadamente hacia terceros... espero seas retribuida como lo mereces!
Hola

si, la verdad,... es que olvidè el tema :oops:
pero no el pedido :)

se que gracias a ti, este hilo le servirà a mas de uno jeejj

y si, puedes poner enlaces externos
me gustaria verlo

saludos y hasta pronto