Foros del Web » Programando para Internet » Javascript »

validar checkbox

Estas en el tema de validar checkbox en el foro de Javascript en Foros del Web. saludos necesito ayuda con este código javascript, es para validar un formulario sobre un conjunto de checkbox sobre determinados opciones. el codigo es para que, ...
  #1 (permalink)  
Antiguo 01/06/2007, 11:13
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
validar checkbox

saludos necesito ayuda con este código javascript, es para validar un formulario sobre un conjunto de checkbox sobre determinados opciones.

el codigo es para que, al enviar el formulario, el código java busque si hay errores pero , cuando llega a la parte de tener que validar si ALMENOS algunos de los checkbox estan activados, ocurre lo peor, éste codigo salta diciendo que no hay ninguna casilla marcada cuando sí la hay.

Código:
<script>
function validar(formulario){  
//-- lo de "..." significa que en el mismo código lo he subdivido por partes para validar otras cosas, longitud del campo Nombre, díguitos en el campo Edad, etc..--//
...
 //--Este sería la parte del código script que tendría que validar si exite o no alguna casilla marcada-//
  var todos = document.forms[0].getElementsByTagName('input');
  var allValid = true;
  for(x=0;x<todos.length;x++){
    if(todos[x].unchecked){
      allValid = false;
      break;
    }
  }
  if (!allValid) {
    alert("Marque algún producto o sugieranos alguno");
    document.forms[0].id1.focus();
    return false;
  }
 //-FIN de esta parte del código--//
 //-- "..." lo mismo que he dicho antes pero siguiendo hasta el final--//
...
// esto último, significa que, despues de comprovar todo el código y haya errores, se permita enviar la información del formulario--//
 return (true);

}
bueno los campos de checkbox tiene diferentes "name", por ahí he visto códigos parecidos pero me obligarian a subdividir el código script en dos parte, o poner codigos en "onSumbit" por separado... pero si se puede arreglar esto mucho mejor .saludos!
  #2 (permalink)  
Antiguo 01/06/2007, 11:23
Avatar de netzky  
Fecha de Ingreso: mayo-2007
Mensajes: 56
Antigüedad: 17 años
Puntos: 1
Re: validar checkbox

Creo que tu error esta en este pedazo de codigo:


Codigo Original:

Código PHP:
 var todos document.forms[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].unchecked){
      
allValid false;
      break;
    }
  } 
Codigo Modificado:

Código PHP:
 var todos document.forms[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].checked="false"){
      
allValid false;
      break;
    }
  } 
Salu2
  #3 (permalink)  
Antiguo 01/06/2007, 11:32
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Re: validar checkbox

he puesto el código pero sigue saliendo el mismo error

No deberia salir el mensaje de alerta si alguna de las casilla "checkbox" del formulario estuviera marcada, sólo, si todas estuvieran Desmarcadas.

creo que es posible que el comando ese getElementsByTagName('input'), coja todo tipos de elementos de formulario, quizas el fallo esté en que habria que poner algo para que sólo buscase en los campos/elementos del tipo Checkbox que hay en el formulario.

no se si puede ser eso o no. tampoco tengo mucha idea
  #4 (permalink)  
Antiguo 01/06/2007, 11:41
Avatar de netzky  
Fecha de Ingreso: mayo-2007
Mensajes: 56
Antigüedad: 17 años
Puntos: 1
Re: validar checkbox

Despues de estar revisando de pies a cabeza tu formulario, me di cuenta, que nunca haces referencia al nombre del formulario que contiene tu checkbox


Código PHP:
 var todos document.forms[0].getElementsByTagName('input'); 
se llama forms, tu formulario??????, si no es asi usa

Código PHP:
 var todos document.form[0].getElementsByTagName('input'); 
o asignale un nombre a tu formulario, saludos, tu codigo ya funciona en mi equipo.....

y tambien usa el codigo que te pase anteriormente, tambien tenias error ahi.... salu2....
  #5 (permalink)  
Antiguo 01/06/2007, 11:54
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Re: validar checkbox

lo he estado intentando pero no hay forma no encuentro el error .

ahora eso si... si pongo éste código:

Código PHP:
  var todos document.form[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].type=="checkbox" && todos[x].checked){
      
allValid false;
      break;
    }
  } 
me ocurre exactamente lo contrario de lo que deberia hacer, es decir, si pongo esto, me sale que... si no hay ninguna casilla marcada, lo da por bueno, pero si marco cualquiera de las casillas, me salta el error..., en otras palabras a ese codigo supongo que lo que hay que cambiarle es que haga lo contrario... ¿es posible que en && todos[x].checked se pusiera algo como && todos[x].unchecked. no sé para correguir el efecto contrario.
  #6 (permalink)  
Antiguo 01/06/2007, 12:19
Avatar de netzky  
Fecha de Ingreso: mayo-2007
Mensajes: 56
Antigüedad: 17 años
Puntos: 1
Re: validar checkbox

Codigo Original:

Código PHP:
  var todos document.form[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].type=="checkbox" && todos[x].checked){
      
allValid false;
      break;
    }
  } 

Codigo Modificado:


Código PHP:
 var todos document.form[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].type=="checkbox" && todos[x].checked == "false"){
      
allValid false;
      break;
    }
  } 
Salu2
  #7 (permalink)  
Antiguo 01/06/2007, 12:42
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Re: validar checkbox

que hijo, , no hay suerte, ahora con esa modificación no hace absolutamente nada.

de todas formas gracias netzky por tu ayuda. ya lo intentare yo solo haber si funciona

saludos!
  #8 (permalink)  
Antiguo 01/06/2007, 13:22
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Re: validar checkbox

la verdad es que no me he comido mucho la cabeza la verdad... si con:
Código PHP:
  var todos document.form[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].type=="checkbox" && todos[x].checked){
      
allValid false;
      break;
    }
  } 
  if (!
allValid) {
    
alert("Marque algún producto o sugieranos alguno");
    
document.forms[0].id1.focus();
    return 
false;
  } 
produce el efecto contrario, pues entonces añadir al final el condicional "else" así:
Código PHP:
var todos document.forms[0].getElementsByTagName('input');
  var 
allValid true;
  for(
x=0;x<todos.length;x++){
    if(
todos[x].type=="checkbox" && todos[x].checked){
      
allValid false;
      break;
    }
  } 
  if (!
allValid) {
  }else{
    
alert("Marque algún producto o sugieranos alguno");
    
document.forms[0].id1.focus();
    return 
false;
  } 
y ya me funciona
  #9 (permalink)  
Antiguo 05/06/2007, 08:54
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 4 meses
Puntos: 5
Re: validar checkbox

Como anotación al pie (Para NetZky)...

forms es una colección del navegador que tiene todos los formulaios (en orden de apertura) que tiene la página... por lo tanto, esa es la forma correcta de acceder a un formulario... forms[0]...

O lo que sería lo mismo... $("form")[0] (para aquellos que conozcan el camino del bien, o sea jquery)

Saludos!
__________________
Manoloweb
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:32.