Foros del Web » Programando para Internet » Javascript »

problema al pasarle los parametros a una funcion

Estas en el tema de problema al pasarle los parametros a una funcion en el foro de Javascript en Foros del Web. Hola quiero validar que al menos seleccionen un checkBox de mi pagina, tengo la siguiente funcion: function ValidateMarkCheckBox(Theform, NFrom, NTo,nameCheckBox) { varMarkChk = false; if ...
  #1 (permalink)  
Antiguo 13/09/2004, 13:36
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
problema al pasarle los parametros a una funcion

Hola quiero validar que al menos seleccionen un checkBox de mi pagina, tengo la siguiente funcion:
function ValidateMarkCheckBox(Theform, NFrom, NTo,nameCheckBox)
{
varMarkChk = false;
if ((NFrom == 0) && (NTo == 1))
{
if (Theform.nameCheckBox.checked)
varMarkChk = true;
}
else
{
for (i=NFrom; i<NTo; i++)
if (Theform.nameCheckBox[i].checked)
{
varMarkChk = true;
break;
}
}
return (varMarkChk);
}

y luego tengo esta funcion para mandar el mensaje de alerta al usuario que invoca a la funcion anterior:
//funcion para validar que seleccione al menos un tipo de producto
function VerificarTipo(Theform,NFrom, Nto,nameCheckBox)
{
if (!ValidateMarkCheckBox(Theform, NFrom, Nto,nameCheckBox))
{
alert('Marque al menos un tipo de producto!');
return false;
}
}
esas funciones las generalize pasandole el nombre del checkBox, mi duda es que si mis checks se llaman asi:
<input name="Unid[]" type="checkbox" id="Unid[]" value="P">
y los que los diferencia es su value, entonces al hacer el llamado a la funcion en el boton "Registrar" o aceptar, como lo coloco Unid ó Unid[] como un arreglo?? la cosa es que me da error y no se porque??

Este es mi boton Registrar:
<input name="registrar" type="button" id="registrar" value="Registrar" onClick="javascript:return VerificarTipo(document.forms,0,2,Unid[]);">

Si mi funcion es muy complicada, de que otra forma puedo validar que se seleccione al menos un checkBox??Espero puedan ayudarme
  #2 (permalink)  
Antiguo 13/09/2004, 14:18
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Y si lo simplificamos con esta tontería:

Código HTML:
<html>
<head>
<script>
varMarkChk=0;
function comprobar(){
if(varMarkChk<1){

alert("Marque al menos un producto!");
return false;}

}
</script>
</head>
<body>
<form onsubmit="return comprobar()" action="javascript:alert('enviado');">
<input type="checkbox" name="pepe" onclick="varMarkChk+=(this.checked)?1:-1;">
<input type="checkbox" name="pepe2" onclick="varMarkChk+=(this.checked)?1:-1;">
<input type="checkbox" name="pepe3" onclick="varMarkChk+=(this.checked)?1:-1;">
<input type="checkbox" name="pepe4" onclick="varMarkChk+=(this.checked)?1:-1;">
<input type="checkbox" name="pepe5" onclick="varMarkChk+=(this.checked)?1:-1;">
<input type="checkbox" name="pepe6" onclick="varMarkChk+=(this.checked)?1:-1;">
<input type="submit">
</form>
</body>
</html> 
Te serviría?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 13/09/2004, 14:21
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61


Adaptado a tus nombres:

Código HTML:
<html>
<head>
<script>
varMarkChk=0;
function comprobar(){
if(varMarkChk<1){

alert("Marque al menos un producto!");
return false;}

}
</script>
</head>
<body>
<form onsubmit="return comprobar()" action="javascript:alert('enviado');">
<input type="checkbox" name="Unid[]" value="a" onclick="varMarkChk+=(this.checked)?1:-1;">letra a<br>
<input type="checkbox" name="Unid[]" value="s"  onclick="varMarkChk+=(this.checked)?1:-1;">letra s<br>
<input type="checkbox" name="Unid[]" value="d"  onclick="varMarkChk+=(this.checked)?1:-1;">letra d<br>
<input type="checkbox" name="Unid[]" value="f"  onclick="varMarkChk+=(this.checked)?1:-1;">letra f<br>
<input type="checkbox" name="Unid[]"  value="g" onclick="varMarkChk+=(this.checked)?1:-1;">letra g<br>
<input type="checkbox" name="Unid[]" value="h"  onclick="varMarkChk+=(this.checked)?1:-1;">letra h<br>
<input type="submit">
</form>
</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 14/09/2004, 05:47
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola Karlankas, intente el codigo que me diste y en otra pagina funciona perfecto, [pero en la mia a penas se abre me da un error de javascript, nose si es porque coloque el llamado a la funcion en conjunto con otras funciones:

<input name="registrar" type="button" id="registrar" value="Registrar" onClick="javascript:validar(this.form,'ing')?Envia Forma(this.form,'ing'):''?comprobar();">
por cierto si quiero invocar a varias funciones en el mismo boton tengo entendido que se separan con un signo de interrogacion,cierto o no???

Los check los coloque tal como me indicaste:
<input name="Unid[]" type="checkbox" id="Unid[]" value="C" onclick="varMarkChk+=(this.checked)?1:-1;">, con la diferencia que el name es un arreglo y todos se llaman igual.
Cuando tu colocas en tu codigo: (this.checked)?1:-1; es que le estas asignando el valor de -1, cierto??
Disculpa tantas preguntas, pero no veo mi error

Una pregunta
  #5 (permalink)  
Antiguo 14/09/2004, 05:57
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Empezaremos por el final:

cuando pongo: varMarkChk+=(this.checked)?1:-1;

Lo que hago es decir que si el checkbox se queda marcado sume uno a varMarkChk y si no que le reste uno. De forma tal que si esa variable (varMarkChk) cuando envías el formulario tiene un valor de 1 o más es que al menos hay un check marcado.

Si es verdadero lo que está entre paréntesis se da el primer valor entre la "?" y los ":" y si no se da el segundo.

Respecto al resto pon mejor la llamada a mi script como te pongo en el ejemplo:

<form onsubmit="return comprobar()"...

en caso de que no uses la etiqueta form (mal hecho) prueba a cambiarlo así:
Código HTML:
<input 
name="registrar" 
type="button" id="registrar" 
value="Registrar" 
onClick="validar(this.form,'ing');comprobar();EnviaForma(this.form,'ing')"> 
Ya que para separar funciones se usa el punto y coma y no las interrogaciones.

Sería de mucha ayuda que me dieras el enlace a la página o pusieras el código de la misma para poder ayudarte mejor.

Un saludo y no te preocupes por preguntar! Estamos aquí para ayudarte.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 14/09/2004 a las 05:59
  #6 (permalink)  
Antiguo 14/09/2004, 06:17
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
KarlanKas para colocarte el enlace a mi pagina tendria que tener un servidor o algo asi, porque me meti en el icono de hiperenlace y me pide el url?? te lo podria mandar por correo?? o pego todo el codigo en este editor(que no seria lo correcto)Cual es la mejor forma para ti??
  #7 (permalink)  
Antiguo 14/09/2004, 06:32
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Te he mandado una dirección a tu MP
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 00:30.