Foros del Web » Programando para Internet » Javascript »

Ayuda con validacion

Estas en el tema de Ayuda con validacion en el foro de Javascript en Foros del Web. Buenas, tengo un formulario con unos campos que deseo enviar. quiero que algunos de esos datos sean obligatorios, y tengo lo sihguiente: en el boton ...
  #1 (permalink)  
Antiguo 30/11/2005, 04:16
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Ayuda con validacion

Buenas, tengo un formulario con unos campos que deseo enviar. quiero que algunos de esos datos sean obligatorios, y tengo lo sihguiente:

en el boton

onClick="validar()"

y la funcion

function validar(){

if(document.form.nombre.value="")
{
alert(error_27);
return false;
}

}

y no hay forma de que me salga el alert diciendome que hay un error. que estoy haciendo mal?

salu2
  #2 (permalink)  
Antiguo 30/11/2005, 05:41
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenas

...y error_27 está definido?
  #3 (permalink)  
Antiguo 30/11/2005, 08:22
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
si, error_27 es un campo coulto con un valor.

salu2
  #4 (permalink)  
Antiguo 30/11/2005, 08:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Entonces no está definido para javascript. Tal y como se lo pides espera que error_27 sea una variable definida con algún valor. Si quieres que muestre el valor de un elemento del documento debes indicárselo.
  #5 (permalink)  
Antiguo 30/11/2005, 09:45
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
gracias tunait, pero de que forma he de hacerlo??

el problema lo tengo con un campo checkbox. el usuario tiene 6 opciones, y quiero como minimo que inserte una. habia hecho el validar formulario tipico del dreamweaver, pero no me deja incluir el check_box. y la verdad, no se como hacerlo.

a ver si puedes darme alguna pistilla

gracias!
  #6 (permalink)  
Antiguo 30/11/2005, 10:05
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Pues debes referenciarlo, al igual que referencias el campo en las líneas que dejaste

if(document.form.nombre.value="")

ahí estás referenciando al calor del campo de nombre nombre del form form del documento. Pues si quieres sacar en una alerta el valor de otro campo del mismo form deberás referenciarlo igual

onClick="validar()"

y la funcion

function validar(){

if(document.form.nombre.value="")
{
alert(document.form.error_27.value);
return false;
}

}

  #7 (permalink)  
Antiguo 30/11/2005, 13:12
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
buenas de nuevo tunait, casi lo tengo, solo faltan limar un par de cosillas... he hecho lo siguiente:

function validar(){
var fr=document.forms.form;
var error = fr.error.value;

if(fr.nombre.value=="")
{
alert(error);
fr.nombre.focus();
return false;
}

y me funciona perfectamente. los problemillas son:

el form me llama a un archivo.php (en el action), pero la idea es que si hay un error, no vaya y se quede en la pagina. le he puesto el focus, pero se me va de pagina.

y la segunda, es que tengo un check definido como idioma[]. como puedo jacer para que me detecte si alguno de los 6 valores del array, estan como minimo una seleccionado? he leido algo de selected index o algo asi, peor no encuentro el que.

salu2 y gracias
  #8 (permalink)  
Antiguo 30/11/2005, 13:24
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Iniciado por ferranWEB
el form me llama a un archivo.php (en el action), pero la idea es que si hay un error, no vaya y se quede en la pagina. le he puesto el focus, pero se me va de pagina.
Debes llamar a la función en el evento onsubmit del form pidiéndole que te traiga de vuelta el valor de retorno. Osea, algo así como onsubmit="return validar()" (ojo, al form, no al botón de submit)

Cita:
y la segunda, es que tengo un check definido como idioma[]. como puedo jacer para que me detecte si alguno de los 6 valores del array
¿qué array?
  #9 (permalink)  
Antiguo 30/11/2005, 13:32
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
no he entendido lo que me has comentado Tunait. ni la primera ni la segunda cita. te digo array por llamarle de alguna manera. es un campo checkbox, en el cual tengo seis opciones. pueden seleccionarse hasta un máximo de 6, y un mínimo de 1. a la hora de recoger el form en un archivo php para insertarlo en una bd, hago lo siguiente:

Código:
if (count($_POST['to_lang']) > 1) { // si hay más de uno
  $idioma = implode(",",$_POST['to_lang']); // que me los una con coma
} else {
  $idioma = $_POST['to_lang'][0]; // si hay 1 me guarda ese valor en idioma, y si no hay ninguno me guarda idioma vacío
}
y esto me inserta los valores. pues como le digo a la variable (es to_lang), que si no hay ninguno me lo marque? no me obedece como los otros, poniendo to_lang.value =="".

y lo del form, no lo entiendo...

salu2
  #10 (permalink)  
Antiguo 30/11/2005, 13:54
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
A ver, lo que respondí a la primera cita es que debes estar llamando a la función que valida desde el botón de submit ¿es así?

para que no lo envíe tras el return false de la funcón debes llamar a la función desde el propio tag del form en el evento onsubmit

<form name="form" action="loquesea.php" onsubmit="return validar()">

Respecto a lo segundo lo más sencillo es que crees una variable global en javascript que inicialices a 0 y se incremente cada vez que se marque uno de los checkboxes. Como se necesita que esté seleccionado al menos uno compruebas en la función que esa variable sea igual o mayor que 1.

Algo así


var idiomas = 0
function validar(){
var fr=document.forms.form;
var error = fr.error.value;

if(fr.nombre.value=="")
{
alert(error);
fr.nombre.focus();
return false;
}
if(idiomas ==0){
alert('debe seleccionar al menos un idioma')
return false
}

}

y a cada uno de tus checkbox le agregas lo siguiente:

onclick="this.checked ? idiomas++ : idiomas--"

<input type="checkbox" name="to_lang[]" value="catañol" onclick="this.checked ? idiomas++ : idiomas--" />

Con esto que le agregues a los checkbox incrementará en 1 el valor de la variable idiomas cuando se seleccione y la decrementará al des-seleccionarse
  #11 (permalink)  
Antiguo 30/11/2005, 15:45
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
tunait, hago lo que me dices en el form, y sigue mandandome a la pagina php. tengo lo siguiente:

<form action="alta2.php" method="post" enctype="multipart/form-data" name="form_online" onsubmit="return validar()">

y no hay forma, despues de cerrar el ultimo error, me carga la pagina php. y lo del check box, tampoco me funciona!! q mala suerte tengoo!! jajaja

<input name="to_lang[]" type="checkbox" value="de" onclick="this.checked ? idiomas++ : idiomas--">

es correcto?

gracias!
  #12 (permalink)  
Antiguo 01/12/2005, 00:01
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hum ... déjame ver el código fuente completo a ver por dónde se escapa el aire
  #13 (permalink)  
Antiguo 01/12/2005, 03:30
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
tunait, te lo he pasado por privado ya que es muy largo.

salu2
  #14 (permalink)  
Antiguo 01/12/2005, 03:33
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Uf, si es muy largo cuélgamelo en algún lado para poder verlo directamente en marcha (me pasas la url por privaddo si quieres)
  #15 (permalink)  
Antiguo 03/12/2005, 12:00
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
"no news, good news"

...quiero creer que lograste solucionarlo
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 12:32.