2010-07-29 22 views
14

Oye, me pregunto cómo obtener el id de una casilla cuando está marcada.Obtener la identificación de una casilla de verificación? - jQuery

Esto es lo que mi HTML, probablemente se vería como en un principio:

<div class="check_filter"> 

    <div id="filter"> 
     <input type="checkbox" id="check1" /><label for="check1">Marketing</label> 
     <input type="checkbox" id="check2" /><label for="check2">Automotive</label> 
     <input type="checkbox" id="check3" /><label for="check3">Sports</label> 
    </div> 

</div><!-- End check_filter --> 

Asumo la jQuery sería algo como esto:

$(document).ready(function() {  
    $(":checkbox").click(function(){ 
     var id = $(this).attr('id'); 

     $.post("index.php", { id: id }); 
     //return false to ensure the page doesn't refresh 
     return false; 
    });  
}); 

Estoy intentando conseguir el facturado Identificación del elemento y luego publicar esa identificación en una consulta de MySQL para obtener los resultados del ID de la base de datos.

Gracias por la ayuda sobre esto.

+1

Utilizaría el evento 'change' en lugar del evento' click' para las casillas de verificación. De lo contrario, parece que tu código debería funcionar bien. ¿Lo has probado y has descubierto que no? –

Respuesta

15

Es probable que el evento change aquí, así:

$(function() { 
    $(":checkbox").change(function(){ 
    $.post("index.php", { id: this.id, checked: this.checked }); 
    });  
}); 

Esto se publica cada vez que una casilla de verificación cambia, y le permite al lado de PHP conocer la ID y si está marcada o no.

+0

+1 para 'this.id', etc., pero se olvidó de cambiar' click' por 'change' (en el código). : o) EDITAR: ha sido corregido. – user113716

+0

@patrick - Wops, fixed, @Generic - Puedes probarlo aquí: http://jsfiddle.net/nick_craver/zM4md/ Funciona con la barra espaciadora, etc :) –

+0

Hice un ejemplo después de hacer el comentario. Disculpas, parece que fue arreglado el año pasado. – GenericTypeTea

7

¿El jQuery que proporcionó funciona bien? Probablemente debería eliminar el return false al show que la casilla de verificación ha sido marcada.

EDITAR: $.post() es para una solicitud asíncrona (técnica AJAX) por lo que no habrá actualización de página.

EDIT 2: También es posible que desee para ver si la casilla de verificación se comprueba (no sólo de que se ha hecho click):

$(document).ready(function() {  
    $(":checkbox").click(function(){ 
     var id = $(this).attr('id'); 
     var isChecked = $(this).attr('checked')); 
     $.post("index.php", { id: id, isChecked: isChecked }); 
    });  
}); 
1

Puede utilizar mejor jQuery get en lugar de publicar. Se le permite manejar la salida de su solicitud: http://api.jquery.com/jQuery.get/

Ejemplo:

$(document).ready(function() {  
    $(':checkbox').click(function(){ 
     var id = $(this).attr('id'); 
     var isChecked = $(this).attr('checked')); 
     $.get(
      'getcheckbox.php', 
      { id: id, isChecked: isChecked }, 
      function(data) { 
      //return value in getcheckbox.php and use it in on complete function 
      var result = data; 
      } 
     ); 
    });  
}); 
0

¿Por qué sólo se necesita esto para el nombre de una casilla de verificación, pero $ (este) con el fin de acceder al valor

$('input:checkbox').change(function() { 
     console.log("here i am: " + this.name + " value = " + $(this).val()); 
     } 
    ); 
2

puede utilizar el selector de :checkbox y compruebe el id y comprobado propiedades del elemento DOM, así:

var id = $(this).find(":checkbox")[0].id; var isChecked = $(this).find(":checkbox")[0].checked;

Cuestiones relacionadas