Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Marcar RADIO pulsando "cerca"

Estas en el tema de Marcar RADIO pulsando "cerca" en el foro de Javascript en Foros del Web. Buenos dias, tengo un formulario, con un monton de radio buttons en una tabla. El problema es que hay que meter muchos datos, y acertar ...
  #1 (permalink)  
Antiguo 16/07/2015, 06:37
 
Fecha de Ingreso: julio-2015
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Marcar RADIO pulsando "cerca"

Buenos dias,
tengo un formulario, con un monton de radio buttons en una tabla.
El problema es que hay que meter muchos datos, y acertar en el redondel del radio, cuando tienes que marcar muchas casillas, es un poco engorroso.

Mediante javascript, se puede indicar que marque el radio, si se hace click en su celda de la tabla?
He buscado por internet pero no encuentro nada parecido... no se si el problema es que no se explciarme mejor.

El codigo del formulario es a grandes rasgos este:

echo "<tr><td>$nombre $apellidos"</td>";
echo "<td class=center><input type='radio' name=trabajador[$['id'] value='tb' ></td>";
echo "<td class=center><input type='radio' name=trabajador[$'id'] value='dl'></td>";
echo "<td class=center><input type='radio' name=trabajador[$id'] value='va'></td>";
echo "<td class=center><input type='radio' name=trabajador[$id'] value='bj' ></td>";
echo "<td class=center><input type='radio' name=trabajador[$id'] value='oh'></td>";
echo "<td class=center><input type='radio' name=trabajador[$id'] value='sc' ></td>";
echo "<td class=center><input type='radio' name=trabajador[$id'] value='pe' ></td>";
echo "</tr>";

Como veis, cada radio esta en un "td"... quisiera que cuando hagan click en la celda, se marque ese radio button.... pero no se cómo hacerlo...

Gracias por adelantado.
  #2 (permalink)  
Antiguo 16/07/2015, 11:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Marcar RADIO pulsando "cerca"

Bienvenido a FDW.

Sí es posible. Una de las maneras de hacerlo es delegando una función a cada celda cuando se dé un clic en ellas, en donde tomarás al radiobutton que contiene y verificarás si está marcado o no para así marcarlo o desmarcarlo mediante la propiedad checked.

Por ejemplo:

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     [].forEach.call(document.querySelectorAll("table td"), function(td){
  3.         td.addEventListener("click", function(){
  4.             var radio = this.querySelector("[type=radio]");
  5.             if (radio.checked){
  6.                 radio.checked = false;
  7.             }
  8.             else{
  9.                 radio.checked = true;
  10.             }
  11.         }, false);
  12.     });
  13. }, false);

Una vez que hayan cargado los elementos del documento, recorremos al conjunto de celdas de la tabla presente en el mismo. En cada iteración, delegamos una función a cada celda para cuando se dé un clic en cada una de ellas. En dicha función, tomo al elemento de tipo "radio" que posee y verifico si está marcado; de ser así, lo desmarco, caso contrario, lo marco.

Esa verificación (la condición) también puede ir en una sola línea utilizando operadores ternarios:

Código Javascript:
Ver original
  1. radio.checked = radio.checked ? false : true;

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 17/07/2015, 03:32
 
Fecha de Ingreso: julio-2015
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Marcar RADIO pulsando "cerca"

Madre mia!!! PERFECTO!
Es exactamente lo que estaba buscando!

Yo te lo agradezco... pero mis usuarios MUCHISSIMO MAS!!!

Gracias!!!
  #4 (permalink)  
Antiguo 17/07/2015, 09:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Marcar RADIO pulsando "cerca"

Como una mejora, incluye una condición más:

Código Javascript:
Ver original
  1. if (radio){
  2.     if (radio.checked){
  3.         radio.checked = false;
  4.     }
  5.     else{
  6.         radio.checked = true;
  7.     }
  8. }

Como no todas las celdas de la tabla contendrán radiobuttons, primero verificamos que se haya logrado obtener a uno en la línea anterior (en donde asignamos el radiobutton a la variable radio) y solo si este existe, verificamos si está marcado o no.

NOTA: Esta nueva condición debe de ir en reemplazo de la anterior.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 17/07/2015 a las 15:55 Razón: Nota

Etiquetas: formulario, input, marcar, radio
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 09:04.