Foros del Web » Programando para Internet » Javascript »

seleccionando checkbox

Estas en el tema de seleccionando checkbox en el foro de Javascript en Foros del Web. Hola, tengo un problema, tengo una lista de checkbox, pero estos se llenan dinamicamente dependiendo de una consulta. Bueno y he estado validando con ajax ...
  #1 (permalink)  
Antiguo 19/08/2009, 11:52
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
seleccionando checkbox

Hola, tengo un problema, tengo una lista de checkbox, pero estos se llenan dinamicamente dependiendo de una consulta. Bueno y he estado validando con ajax para que se seleccione al menos uno.

La validacion me funciona correctamente si es que tengo mas de 1 registro... pero cuando tengo un solo checkbox --asi lo seleccione-- siempre me manda el alert de que no he seleccionado nada.... y lo unico que se me ocurre para validar es preguntando si el array esta vacio pero no se como , me pueden ayudar?

asi lo valido:

Código:
	selectcheck=false;
	var checkboxes = new Array();
    var arrClaves = new Array();
    j=0;ff=0;
	for(i=0;i < document.frmcita["doc[]"].length; i++){
		if(document.frmcita["doc[]"][i].checked){
			
			var arr_doctor = document.frmcita["doc[]"][i].value;
			arrClaves[j]=arr_doctor;
            checkboxes[ff]="&doc[]="+arrClaves[j];
            ff++;
            j++;
			selectcheck=true;
			
		}
	}

	if(!selectcheck){
		alert("Debe seleccionar al menos uno.");
		return false;
	}
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 19/08/2009, 12:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: seleccionando checkbox

Prueba así:
Código Javascript:
Ver original
  1. if (document.frmcita["doc[]"].length) {
  2.     /* for(;;) para comprobar que se haya seleccionado uno */
  3. } else {
  4.     selectcheck = document.frmcita["doc[]"].checked;
  5. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 19/08/2009, 12:36
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: seleccionando checkbox

Hola david gracias por contestar... segun te entendi (y disculpa mi ignorancia) debo poner el for que recorre los checks dentro del primer if?... porque si es asi, este es el resultado:

Código:
selectcheck=false;
var checkboxes = new Array();
var arrClaves = new Array();
j=0;ff=0;

if (document.frmcita["doc[]"].length) {
		for(i=0;i < document.frmcita["doc[]"].length; i++){
			if(document.frmcita["doc[]"][i].checked){

				var arr_doctor = document.frmcita["doc[]"][i].value;
				arrClaves[j]=arr_doctor;
           	 	checkboxes[ff]="&doc[]="+arrClaves[j];
           	 	ff++;
            	                 j++;
				selectcheck=true;	
			}
		}

	                 if(!selectcheck){
		     alert("Debe seleccionar al menos uno.");
		     return false;
	                 }

		
	} else {    
		selectcheck = document.frmcita["doc[]"].checked;
	}
Pero aun el problema persiste, solo valida bien de a partir de 2 checkbox a mas....
__________________
Quitenme la vida pero no la bebida.

Última edición por cesarpunk; 19/08/2009 a las 12:44
  #4 (permalink)  
Antiguo 19/08/2009, 12:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: seleccionando checkbox

Tema trasladado desde AJAX
  #5 (permalink)  
Antiguo 19/08/2009, 13:27
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: seleccionando checkbox

Hola

Para mi sorpresa me ocurrió lo mismo y lo solucioné así

Código javascript:
Ver original
  1. function funcion (c) {
  2. var b = c.ckb;
  3. if (!b.checked) //Si el primero no está seleccionado
  4.  for (var i=0; chk = c.ckb[i]; i++)
  5.     if (chk.checked) return;
  6.     alert('Has de selecionar al menos uno de los mensajes');
  7.     return false;
  8. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 19/08/2009, 13:54
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: seleccionando checkbox

hola, gracias por responder... pero en que parte procesas los valores de los checkboxes?

Lo probe como tu me dijiste... pero esta vez no lo valida xD

Código:
	selectdoctor=false;
	var checkboxes = new Array();
    var arrClaves = new Array();
    j=0;ff=0;
	
	for(i=0;i < document.frmcita["doc[]"].length; i++){
		if(document.frmcita["doc[]"][i].checked){

			var arr_doctor = document.frmcita["doc[]"][i].value;
			arrClaves[j]=arr_doctor;
            checkboxes[ff]="&doc[]="+arrClaves[j];
            ff++;
            j++;
			selectdoctor=true;	
		}
	}
	
	if(document.frmcita["doc[]"].checked){
		for (var i=0; chk = document.frmcita["doc[]"][i]; i++)    
		if (chk.checked) return;    
		alert('Debe seleccionar los doctores que intervendrán en el tratamiento');    
		return false;
	}
__________________
Quitenme la vida pero no la bebida.

Última edición por cesarpunk; 19/08/2009 a las 14:04
  #7 (permalink)  
Antiguo 19/08/2009, 14:22
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: seleccionando checkbox

Hola

De esa manera el problema persistirá. Debería de ser

Código javascript:
Ver original
  1. if(!document.frmcita["doc[]"].checked){
  2.         for (var i=0; chk = document.frmcita["doc[]"][i]; i++)    
  3.         if (chk.checked) return;    
  4.         alert('Debe seleccionar los doctores que intervendrán en el tratamiento');    
  5.         return false;

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 19/08/2009, 14:32
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: seleccionando checkbox

Hola, probe con el ! en la condicion y me valida cuando los checks estan vacios, pero cuando marco 1 ya no me responde la funciobn ajax que deberia validar lo demas....

Código:
	for(i=0;i < document.frmcita["doc[]"].length; i++){
		if(document.frmcita["doc[]"][i].checked){

			var arr_doctor = document.frmcita["doc[]"][i].value;
			arrClaves[j]=arr_doctor;
            checkboxes[ff]="&doc[]="+arrClaves[j];
            ff++;
            j++;
			selectdoctor=true;	
		}
	}
	
	if(!document.frmcita["doc[]"].checked){        
		for (var i=0; chk = document.frmcita["doc[]"][i]; i++)            
		if (chk.checked) return;            
		alert('Debe seleccionar al menos uno');            
		return false;
	}
__________________
Quitenme la vida pero no la bebida.
  #9 (permalink)  
Antiguo 20/08/2009, 08:42
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: seleccionando checkbox

Alguna otra idea??? creo que mi array no reconoce cuando hay un solo elemento... pero nose porque
__________________
Quitenme la vida pero no la bebida.
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 18:48.