Foros del Web » Programando para Internet » Jquery »

> Obtener ID de varios checkbox con jQuery

Estas en el tema de > Obtener ID de varios checkbox con jQuery en el foro de Jquery en Foros del Web. Hola comunidad. Tengo una colección de "n" input's de tipo "checkbox". Necesito obtener solo el ID de aquellos que tienen el check en true. Por ...
  #1 (permalink)  
Antiguo 28/12/2011, 03:13
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 9 meses
Puntos: 7
Pregunta > Obtener ID de varios checkbox con jQuery

Hola comunidad.

Tengo una colección de "n" input's de tipo "checkbox". Necesito obtener solo el ID de aquellos que tienen el check en true.


Por ejemplo:

Código HTML:
Ver original
  1. <input class="chk_listado"  type="checkbox" name="chk_registro_1" id="chk_registro_1" />
  2.  
  3. <input class="chk_listado"  type="checkbox" name="chk_registro_2" id="chk_registro_2" />
  4.  
  5. <input class="chk_listado"  type="checkbox" name="chk_registro_3" id="chk_registro_3" />


Navegando en internet encontré un código que solo obtiene uno. Por ejemplo, si hay 2 elementos con un check, solo obtiene un ID


Código Javascript:
Ver original
  1. if($("input:checked").is(':checked')) {  
  2.             alert($("input:checked").attr("id"));  
  3.         } else {  
  4.             alert("No está activado");  
  5. }



Si el usuario, solo da click para chequear los dos primeros, deseo obtener el ID de los dos que fueron chequedos, y guardarlos en un array. Algo como estos:

var array = Array();

array[0] = "chk_registro_1";
array[1] = "chk_registro_2";

Agradezco su amable ayuda para resolver este problema. Gracias.
__________________
Loading...
  #2 (permalink)  
Antiguo 28/12/2011, 06:05
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 16 años, 3 meses
Puntos: 187
Respuesta: > Obtener ID de varios checkbox con jQuery

Código Javascript:
Ver original
  1. $('input[type=checkbox]:checked').each(function(){
  2. });

Itera sobre todos los inputs checkbox chequeados.
Dentro de la funcion puedas hacer lo que quieras
  #3 (permalink)  
Antiguo 28/12/2011, 09:54
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 9 meses
Puntos: 7
Pregunta Respuesta: > Obtener ID de varios checkbox con jQuery

Cita:
Iniciado por ryugen Ver Mensaje
Código Javascript:
Ver original
  1. $('input[type=checkbox]:checked').each(function(){
  2. });

Itera sobre todos los inputs checkbox chequeados.
Dentro de la funcion puedas hacer lo que quieras
Hola amigo ryugen. Gracias por responder. Tengo poco conocimiento en jQuery.
Te comento que no comprendo mucho tu idea. Probé el código que me diste. No realiza nada. Te agradezco si me ayudas un poco más con el código.


Mi necesidad es guardar el ID de los checkbox en true en una variable o un arreglo. Algo así como:

Código Javascript:
Ver original
  1. var cadena = "chk_registro_3, chk_registro_15, chk_registro_9";

o en un array.


Se que existe una función que devuelve la cantidad de elementos con check en true.


Código Javascript:
Ver original
  1. var y = $('input:checkbox:checked').size();
  2. alert(y);

Si existe algo así, debe existir algo que verifique pero retorne los nombres o ID.

Gracias de nuevo por tu ayuda.
Saludos.
__________________
Loading...
  #4 (permalink)  
Antiguo 28/12/2011, 12:15
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 9 meses
Puntos: 7
Pregunta Respuesta: > Obtener ID de varios checkbox con jQuery

Hola rygen.

Estudié un poco más el código que me pasaste. Veo que ".each" es un ciclo que recorre los elementos. En mi caso fuí más específico e indico que los checkbox que empiecen con "chk_registro_".


Hice el siguiente código:

Código PHP:
Ver original
  1. $('#borrar').click(function(){
  2.  
  3.     $("input:checkbox[name^='chk_registro_']").each(function(index,e){
  4.    
  5.         if($("input:checkbox[name^='chk_registro_']").is(":checked")){
  6.             var g = $("input:checkbox[name^='chk_registro_']").attr("id");
  7.             alert(g+" tiene check");
  8.         } // if
  9.    
  10.     });
  11.  
  12. });

Casi lo consigo. En esta parte:

Código PHP:
Ver original
  1. if($("input:checkbox[name^='chk_registro_']").is(":checked")){
  2.             var g = $("input:checkbox[name^='chk_registro_']").attr("id");
  3.             alert(g+" tiene check");
  4.  
  5. Las 2 anteriores líneas, solo me captan el ID del primer checkbox.
  6. Si no hay un checkbox con true, no ingresa al "If" y no muestra el alert().
  7. Hasta aqui muy bien.
  8.  
  9. Pero si selecciono 'n' checkbox, solo me muestra el primer ID de la
  10. columna de checkbox.
  11.  
  12. } // if

Solo necesito el código que me permita guardar solo los ID con checkbox

¿Cómo podría hacerlo?

Gracias amigos.
__________________
Loading...
  #5 (permalink)  
Antiguo 28/12/2011, 12:27
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 16 años, 3 meses
Puntos: 187
Respuesta: > Obtener ID de varios checkbox con jQuery

Código Javascript:
Ver original
  1. $('#borrar').click(function(){
  2.          var ids = '';
  3.         $("input:checkbox[name^='chk_registro_']").each(function(index,e){
  4.             var $this = $(this);
  5.             if($this.is(":checked")){
  6.                 var g = $this.attr("id");
  7.                 alert(g+" tiene check");
  8.                 ids += g +',';
  9.             } // if
  10.        
  11.         });
  12.      
  13.     });
  #6 (permalink)  
Antiguo 28/12/2011, 12:33
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años, 7 meses
Puntos: 343
Respuesta: > Obtener ID de varios checkbox con jQuery

Se puede hacer más lindo:

Código Javascript:
Ver original
  1. $('button').click(function() {
  2.     var ids;
  3.    
  4.     ids = $('input[type=checkbox]:checked').map(function() {
  5.         return $(this).attr('id');
  6.     }).get();
  7.    
  8.     alert('IDS: ' + ids.join(', '));
  9. });


Ejemplo andando: http://jsfiddle.net/8zHd6/
__________________
blog | @aijoona
  #7 (permalink)  
Antiguo 28/12/2011, 12:49
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 16 años, 3 meses
Puntos: 187
Respuesta: > Obtener ID de varios checkbox con jQuery

Gracias! Excelente uso! Podrías explicar que funcion cumple la funcion get(), busqué en la documentación de jQuery pero ninguna explica esa funcionalidad
http://api.jquery.com/jQuery.get/
gracias
  #8 (permalink)  
Antiguo 28/12/2011, 12:58
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años, 7 meses
Puntos: 343
Respuesta: > Obtener ID de varios checkbox con jQuery

En realidad es este get: http://api.jquery.com/get/

Devuelve los elementos contenidos en el objeto jQuery como un array.
__________________
blog | @aijoona
  #9 (permalink)  
Antiguo 28/12/2011, 13:02
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 16 años, 3 meses
Puntos: 187
Respuesta: > Obtener ID de varios checkbox con jQuery

Gracias nuevamente.
  #10 (permalink)  
Antiguo 28/12/2011, 15:33
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 9 meses
Puntos: 7
De acuerdo Respuesta: > Obtener ID de varios checkbox con jQuery

Hola amigo ryugen y Aijoona por su gran ayuda. Les agradezco mucho.
Ya pude hacer lo que necesitaba.

Voy a dejar el código completo de un botón borrar registros que tiene check. Espero que le sea útil a algún miembro de la comunidad.

No usé DIV's sino tablas para mostrar listados. Entonces, cada registro es una fila con su propio ID. Dentro de la fila tiene propio checkbox con su ID.

Gracias de nuevo y feliz año 2012. Grandes bendiciones para todos.

Código:


Código Javascript:
Ver original
  1. var OP_DELETE = 7;
  2. var nombre_id_fila = "#tr_registro_"; // nombre de la fila de cada registro. Es para borrarlo.
  3. var nombre_id_checkbox = "chk_registro_"; // nombre del checkbox. Ej: chk_registro_15
  4.  
  5. $('#btn_borrar').click(function(){
  6.  
  7.     var arr_checkbox_cheked;
  8.     var array_delete_regs = Array();
  9.     var elem = Array();
  10.    
  11.     if($("input:checkbox[name^='"+nombre_id_checkbox+"']").is(":checked")){ // Al menos un checkbox en true
  12.         arr_checkbox_cheked = $('input[type=checkbox]:checked').map(function() {
  13.             return $(this).attr('id');
  14.         }).get();
  15.  
  16.  
  17.        for(celda=0;celda<arr_checkbox_cheked.length;celda++)
  18.        {
  19.          var numero_id = arr_checkbox_cheked[celda].split('_'); // chk_registro_10
  20.          array_delete_regs[celda] = numero_id[2];
  21.        }
  22.  
  23.         // Ajax, borrar registros en la base de datos.
  24.         var variables = "array_delete_regs="+array_delete_regs+"&int_op="+OP_DELETE+"&int_id=0";
  25.  
  26.         $.ajax({
  27.           data: variables,
  28.           type: "POST",
  29.           url: "folder/archivo.php",
  30.           contentType:"application/x-www-form-urlencoded",
  31.           error: function(){
  32.             $("#error_envio_datos").show("slow");
  33.           },       
  34.  
  35.         });
  36.        
  37.         var select_names = "";
  38.         for(pos=0; pos<array_delete_regs.length;pos++)
  39.         {  
  40.            select_names = select_names+"#tr_registro_"+array_delete_regs[pos];
  41.             if((pos+1) < array_delete_regs.length)
  42.             {
  43.               select_names= select_names+", ";// 2 ó más elementos.
  44.             }
  45.            
  46.         }//for
  47.  
  48.         // Eliminar fila(s) de la tabla.
  49.         $(select_names).fadeTo(2000, 0, function () {
  50.         $(select_names).remove();
  51.        
  52.         var refrescar = location.href;
  53.         $("#show_mensajes").html("Operación realizada. <a href='"+refrescar+"'>Actualizar página.</a>");
  54.         $("#show_mensajes").addClass("accion1");
  55.      });
  56.  
  57.     }// if
  58.  
  59. });
__________________
Loading...

Etiquetas: checkbox
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 23:25.