Foros del Web » Programando para Internet » Javascript »

logica en función checbox (identificar el error)

Estas en el tema de logica en función checbox (identificar el error) en el foro de Javascript en Foros del Web. Hola a todos, tengo un problema con una funcion que utilizo para verificar y pasar los ids de uns checkbox: La funcion recibe el nnumero ...
  #1 (permalink)  
Antiguo 21/06/2011, 12:52
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
logica en función checbox (identificar el error)

Hola a todos, tengo un problema con una funcion que utilizo para verificar y pasar los ids de uns checkbox:

La funcion recibe el nnumero de filas de una consulta, luego hago un for y en una cadena envio los id de esos checkbox, separando por comas esos ids, el problema es que siempre a lo ultimo queda una coma

Entonces por ejemplo genera el resultado asi:

'870001 ','902208 ',

Y la ultima coma, no deberia ir

la función es la siguiente:

Código Javascript:
Ver original
  1. function verifichek()
  2.  {
  3.     var numfilas=document.getElementById("numfilas").value;
  4.    var cad="";
  5.    var cad2="";
  6.     for($i=1; $i<=numfilas; $i++)
  7.     {
  8.         x=document.getElementById("ap"+$i).value;
  9.        if(document.getElementById(x).checked)
  10.       {
  11.         cad=cad+"\'"+x+"\'"+",";
  12.         //alert(cad);
  13.        document.getElementById("examenes").value=cad;
  14.       }
  15.    
  16.     }
  17. }

y el codigo de la consulta y donde tengo una caja oculta para pasar lso valores es:

Código PHP:
Ver original
  1. $sql="SELECT * FROM .... WHERE .....";
  2.         $obj->consulta($sql);
  3.         $nfilas=$obj->numFilas();
  4.        
  5.         echo "<input type='hidden' id='numfilas' value='".$nfilas."'>";
  6.      
  7.         echo "<table border='1' width='400'> ";
  8.  
  9.         echo "<tr><th colspan='2' align='center'>Examenes del folio ".$folio."</th>";
  10.         $nfilas=0;
  11.         while($row = sqlsrv_fetch_array($obj->result)){
  12.            
  13.             $nfilas++;
  14.             //echo $row[3];
  15.             $descripcion=$row[7];
  16.         echo "<tr><td align='center'><input  type='hidden' id='ap".$nfilas."' value='".$row[3]."' >".$descripcion."</td><td align='center'><input type='checkbox' id='".$row[3]."' ></td></tr>";
  17.            
  18.             }
  19.             echo "<input type='hidden' id='examenes' value='' size='50' >";
  20.             echo "</table></br></br>";

Espero me puedan ayudar a identificar el error, lo publico aca porque creo que es problema de logica en la función, muchas gracias
  #2 (permalink)  
Antiguo 21/06/2011, 13:00
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: logica en función checbox (identificar el error)

Hola oscarbt !

¿ Por que no eliminar el último caracter de la cadena con el método slice ?

Código javascript:
Ver original
  1. cad = cad.slice(0, -1)

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 21/06/2011, 15:43
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: logica en función checbox (identificar el error)

Ok muchas gracias....
  #4 (permalink)  
Antiguo 21/06/2011, 15:51
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: logica en función checbox (identificar el error)

El problema es que asi me le corta la coma a cada parte de la cadena
d=cad+"\'"+x+"\'"+",";
cad = cad.slice(0, -1)

Y me muestra resultados asi:

'870001 ''902208 '

Donde deberia ser asi:

'870001 ','902208 '
  #5 (permalink)  
Antiguo 21/06/2011, 16:45
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: logica en función checbox (identificar el error)

Cita:
Iniciado por oscarbt Ver Mensaje
El problema es que asi me le corta la coma a cada parte de la cadena
d=cad+"\'"+x+"\'"+",";
cad = cad.slice(0, -1)

Y me muestra resultados asi:

'870001 ''902208 '

Donde deberia ser asi:

'870001 ','902208 '
Hola oscarbt !

Eso pasa porque estás utilizando el método slice dentro del ciclo for, lo tendrías que hacer al finalizar:

Código javascript:
Ver original
  1. var cad = "";
  2. for($i=1; $i<=numfilas; $i++) {
  3.     x=document.getElementById("ap"+$i).value;
  4.     if(document.getElementById(x).checked) {
  5.         cad = cad + "\'" + x + "\'" + ",";
  6.     }
  7. }
  8. // Al salir del ciclo eliminamos el último carácter
  9. cad = cad.slice(0, -1)

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.

Etiquetas: logica, identificador
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:37.