Foros del Web » Programando para Internet » Javascript »

¿Cómo evitar evento onclick de un tr cuando clico un checkbox que está en el tr?

Estas en el tema de ¿Cómo evitar evento onclick de un tr cuando clico un checkbox que está en el tr? en el foro de Javascript en Foros del Web. Saludos colegas, tengo una duda a la que no he encontrado solución, y es que creo que es un poco rebuscado. Les comento: Tengo varias ...
  #1 (permalink)  
Antiguo 30/08/2006, 13:51
Avatar de Seixas  
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 60
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta ¿Cómo evitar evento onclick de un tr cuando clico un checkbox que está en el tr?

Saludos colegas,

tengo una duda a la que no he encontrado solución, y es que creo que es un poco rebuscado. Les comento:

Tengo varias filas(tr) en una tabla que me hace de lista de registros. Una de las celdas de la tabla muestra un checkbox para cada registro, que puede estar checked o no según un valor (por PHP). Cada tr tiene asignada un onclick que me lleva a una página.

El checkbox a la vez está ligado a una función onclick que cuando lo cambio por AJAX me cambia el valor en la BD.

Pero el problema viene que cuando pincho sobre el checkbox para que me cambie el valor de ese registro en la BD, en vez de eso reacciona el evento de la fila, y me lleva a la otra página.

Mi pregunta es: ¿Hay algun modo de hacer que el evento onclick de la tabla sea ignorado en ese checkbox?

Gracias por su ayuda!
  #2 (permalink)  
Antiguo 30/08/2006, 16:19
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
con este codigo evitas las "propagaciones":
Cita:
<html>
<head>
<script>
function tr(){
alert("tr");
}
function check(e){
alert("check");
e.stopPropagation();
}
</script></head>
<form>
<table>
<tr onClick="tr()"><td>
ch<input type="checkbox" onClick="check(event)">
</td></tr></table>
</form>
<body>

</body>
</html>
pero no funciona en IE.

Para solucionar esto veo dos alternativas:
1.- Capturar el evento y utilizar "srcElement" y/o "target" para comprobar que objeto se clickeó

2.- Utilizar una variable que cuando se clickee el checkbox cambie su valor y y que en la funcion que llama el TR verifique si esa variable existe o no.

saludos

PD: Si tengo tiempo pongo algun ejemplo.
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 30/08/2006, 16:28
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 20 años, 1 mes
Puntos: 4
creo que ya aparecio la solucion:
Cita:
<html>
<head>
<script>
function tr(){
alert("tr");
}
function check(e){
alert("check");
if (e.stopPropagation) {
e.stopPropagation();
}else{
if(window.event) {
window.event.cancelBubble = true;
}
}
}
</script></head>
<form>
<table>
<tr onClick="tr()"><td>
ch<input type="checkbox" onClick="check(event)">
</td></tr></table>
</form>
<body>

</body>
</html>
aunque no lo probé al 100%

saludos
__________________
by Capitán Buscapina
.
  #4 (permalink)  
Antiguo 30/08/2006, 16:54
Avatar de Seixas  
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 60
Antigüedad: 20 años, 6 meses
Puntos: 0
Muchísimas gracias C. Buscapina. No conocía esta función de stopPropagation. Es justo lo que necesitaba.

El que no funcione en explorer por ahora no es problema, ya que sólo lo utilizo para una página web personal mía, así que no tiene porqué estar en explorer.

Gracias de nuevo!
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:42.