Foros del Web » Programando para Internet » Javascript »

Deschequear un radio

Estas en el tema de Deschequear un radio en el foro de Javascript en Foros del Web. Holas a todos.... Tengo una duda. tengo unos radios y quisira que al presionar un boton se me quite el radio q esta checkeado.... sera ...
  #1 (permalink)  
Antiguo 28/09/2007, 16:24
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
Deschequear un radio


Holas a todos....

Tengo una duda. tengo unos radios y quisira que al presionar un boton se me quite el radio q esta checkeado....

sera q me explico y alguien puedo ayudarme????

Gracias a Todos

__________________
.-._.-. [email protected]._.-.
  #2 (permalink)  
Antiguo 28/09/2007, 16:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Deschequear un radio

Hola:

Los radios solo se des-seleccionan, seleccionando otro... si fueran checkboxes podrías poner el atributo checked a false...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 28/09/2007, 20:07
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Deschequear un radio

Hola:

Veo un par de maneras posibles de hacerlo, pero la más elegante me ha parecido ésta: Detectar el radio seleccionado, y sustituirlo por un nuevo elemento desmarcado.

Código PHP:
<input type="radio" name="r" /> Uno<br/>
<
input type="radio" name="r" /> Dos<br/>
<
input type="radio" name="r" /> Tres<br/>
<
input type="radio" name="r" /> Cuatro<br/>
<
input type="radio" name="r" /> Cinco<br/>
<
input type="radio" name="r" /> Seis<br/>

<
button type="button" onclick="desSeleccionar('r')">desSeleccionar radio seleccionado</button>

<
script type="text/javascript">
<!--

function 
desSeleccionar(nombre) {
    var 
losRadio document.getElementsByName(nombre);
    for(var 
i=0i<losRadio.lengthi++) {
        if( 
losRadio[i].checked )
            break;
    }
    if( 
i<losRadio.length )    {    // Existe el elemento
        
var elRadio losRadio[i];
        var 
nuevoRadio document.createElement("INPUT");
        
nuevoRadio.type "radio";
        
nuevoRadio.name nombre;
        
elRadio.parentNode.replaceChildnuevoRadioelRadio );
    }
}

// -->
</script> 
Así que bueno, ésto funciona en FF2 y en IE6, habría que mirar si se envía bien del todo, supongo que sí. También habría que tener cuidado con otros atributos a añadir.




Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 29/09/2007, 02:04
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Deschequear un radio

Hola:

La verdad es que no había pensado en reemplazar el elemento checkeado por uno nuevo, pero por experiencia en el manejo de controles yo diría que en vez de crear un elemento nuevo con createElement, es mejor "clonar" uno con todos sus atributos creados (tal vez solo asignar el value)...

Otra cosa que recuerdo es que explorer implementa mal getElementsByName()... curiosamente la selección en explorer se hace (al menos en viejas versiones) por el id (como si pudiera repetirse)...

Acabo de probar en explorer 7 y parece que la colección ya funciona, pero al probar el script inserté una línea para contar los radios, y por cada "borrado" de un radio, el "length" mengua (porque no se asigna bien el name)...

Con unos toquecitos, se consigue que funcione en explorer (al menos el 7)

Código:
function desSeleccionar(nombre) {
    var losRadio = document.getElementsByName(nombre);

//alert(losRadio.length);

    for(var i=0; i<losRadio.length; i++) {
        if( losRadio[i].checked )
            break;
    }
    if( i<losRadio.length )    {    // Existe el elemento
        var elRadio = losRadio[i]; alert(elRadio.value);
        var nuevoRadio = losRadio[(i + 1) % losRadio.length].cloneNode(true);
        //var nuevoRadio = document.createElement("INPUT");
        //nuevoRadio.type = "radio";
        //nuevoRadio.name = nombre;
        nuevoRadio.value = elRadio.value;
        elRadio.parentNode.replaceChild( nuevoRadio, elRadio );
    }
}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 29/09/2007, 02:37
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Deschequear un radio

Hola a todos.

¿Valdría esto?

Código:
function desSeleccionar(nombre) {
  for (i=0; ele = document.getElementsByName(nombre)[i]; i++)
    ele.checked = false;
}
Saludos,
  #6 (permalink)  
Antiguo 29/09/2007, 03:48
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Deschequear un radio

Hola:

Sí que funciona el código de JavierB (al menos en los 4 navegadores donde lo he probado... Safari, Opera, Firefox y explorer bajo window)... no recuerdo en que ocasión y navegador he tenido problemas anteriormente... tal vez en versiones anteriores de alguno de ellos, o en otrs circunstancias...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 29/09/2007, 09:36
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Deschequear un radio

Ui, pues no era tan dificil, pensaba que no se podía hacer con un código tan sencillo como el de Javier.

Y definitivamente, mi código era mejor con cloneNode(true) (no se me había ocurrido), y quizás sin condicionales al final (comprobamos dos veces la misma cosa), con toda la ristra final dentro del condicional del for.


Bueno, pues a sido cómodo.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #8 (permalink)  
Antiguo 01/10/2007, 06:08
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 10
Re: Deschequear un radio

oigan muchas gracias por su colaboracion y ayuda.. me dejaron anonadada con sus respuestas puesto que de javascript no domino mucho.. gracias chiquill@s
__________________
.-._.-. [email protected]._.-.

Última edición por Mirovita; 01/10/2007 a las 06:26
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:17.