Foros del Web » Programando para Internet » Javascript »

Activar o no un input text con un input radio

Estas en el tema de Activar o no un input text con un input radio en el foro de Javascript en Foros del Web. Hola. Tengo un formulario @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < input type = "radio" name = "Escojer" value = "Si" > < input type ...
  #1 (permalink)  
Antiguo 04/11/2012, 01:09
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Activar o no un input text con un input radio

Hola.

Tengo un formulario

Código HTML:
Ver original
  1. <input type="radio" name="Escojer" value="Si">
  2. <input type="radio" name="Escojer" value="No">
  3.  
  4. <input type="Text" name="SI">
  5. <select name="No">

Necesito que si uno selecciona el pimer radio (SI), se active o cambie de color el input de texto, y si selecciono (NO) se prenda o cambie de color el select.


Tengo esta opción con un checkbox
Código HTML:
Ver original
  1. function toggle(chkbox, group) {
  2.     var visSetting = (chkbox.checked) ? "visible" : "hidden";
  3.     document.getElementById(group).style.visibility = visSetting;
  4. }
  5. function swap(radBtn, group) {
  6.     var modemsVisSetting = (group == "modems") ? ((radBtn.checked) ? "" : "none") : "none";
  7.     document.getElementById("modems").style.display = modemsVisSetting;
  8. }
  9. </script>
  10. ---
  11. <form>
  12. <input type="checkbox" name="monitor" onclick="toggle(this, 'myGroup')" />Monitor
  13. <span id="myGroup">
  14.   Contenido
  15. </span>

Pero no me funciona con checkbox, no con los radios. ¿Un tip porfa?
  #2 (permalink)  
Antiguo 04/11/2012, 02:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 13
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Activar o no un input text con un input radio

Tu problemática se parece un poco a la que expuse yo en este hilo:
http://www.forosdelweb.com/f13/manejar-numeros-argumento-funcion-1021147/

La verdad tengo prisa, en otro momento te hubiera explicado un poco mejor, pero la idea es que al detectar cambio de estado (onChange), es decir de activado a desactivado, de seleccionado a des-seleccionado, de 1 a 0, o como lo quiera ver. El javascript debe hacer "algo" en el elemento que te interese, en este caso tu "algo" es habilitar y deshabilitar el input/select; esto se hace con la propiedad disabled que puede ser true o false.

Te dejo un ejemplo funcional de lo que requieres, la clave son los ID, es muy útil manejar así las páginas, te lo recomiendo y espero te ayude. Las claves del código son el onchange y las ID.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
  2. "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.   <head>
  5.     <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
  6.       <title>Activa y desactiva
  7.       </title>
  8.     <script type="text/javascript">
  9.       function activainput() {
  10.         document.getElementById("js_no").disabled = true; //DESHABILITA el select (id="js_no")
  11.         document.getElementById("js_si").disabled = false; //HABILITA el input (id="js_si")
  12.       }
  13.       function activaselect() {
  14.         document.getElementById("js_no").disabled = false; //HABILITA el select
  15.         document.getElementById("js_si").disabled = true; //DESHABILITA el input
  16.       }
  17.     </script>
  18.   </head>
  19.   <body>
  20.     <div>
  21.       <form name="formulario" action="#">
  22.         <input type="radio" name="Escojer" value="Si" onchange="activainput();">Si
  23.         <input type="Text" name="SI" id="js_si">
  24.         <br><br>
  25.         <input type="radio" name="Escojer" value="No" onchange="activaselect();">No
  26.         <select name="No" id="js_no">
  27.           <option value="no">No</option>
  28.         </select>
  29.       </form>
  30.     </div>
  31.   </body>
  32. </html>

Espero haberte ayudado, un saludo.-


PD: como recomendacion no te bases en códigos solo para cambiarlos, es mejor hacerlos uno porque las necesidades de otros no siempre son las mismas que las nuestras.
  #3 (permalink)  
Antiguo 04/11/2012, 18:42
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Activar o no un input text con un input radio

Mil gracias.
El código lo uso para aprender un poquito más cada día.
  #4 (permalink)  
Antiguo 05/11/2012, 09:23
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Activar o no un input text con un input radio

Retomo el tema.

Acabé utilizando el evento onclick, en lugar de onchange, ya que el maravilloso explorer, respondía al segundo click, así que a partir de ahí prendía los campos al revés.

Una pregunta. Si quiero que se activen 2 eventos, ¿tengo que ponerlo así?:

function activainput() {
document.getElementById("js_no").disabled = true;
document.getElementById("js_no").style.visibility = hidden;


o se puede algo como
function activainput() {
document.getElementById("js_no").disabled = true && style.visibility = hidden;
  #5 (permalink)  
Antiguo 05/11/2012, 11:35
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Activar o no un input text con un input radio

buenas...

@rafael. la segunda alternativa no te funcionaría porque javascript pensará que style es una variable pero no está definida por ningún lado. por lo visto lo que tu quieres hacer es acortar la cantidad de código a escribir. en ese caso puedes almacenar en una variable la referencia del elemento y a partir de esa variable accesar a las propiedades.

Código:
var elem = document.getElementById("js_no");
elem.disabled = true;
elem.style.visibility = "hidden";
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 08/11/2012, 12:13
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Activar o no un input text con un input radio

Oooooohhhh.

Mil cracias.

Estaba exlorando esta versión
Código Javascript:
Ver original
  1. function unhide(divID) {
  2.  var item = document.getElementById(divID);
  3.  if (item) {
  4.  item.className=(item.className=='NoEstoy')?'unhidden':'SiEstoy';
  5.  }
  6.  }

Y tengo algunas dudas

¿divID es parte del DOM? ¿y la palabra unhidden?

Y esta forma de poner el signo de interrogación es algo parecido a un eval?
?'unhidden':

Edito. unhidden al parecer no lo es, así que no estoy seguro contra qué cosa evalua esto.

Última edición por Rafael; 08/11/2012 a las 12:18
  #7 (permalink)  
Antiguo 08/11/2012, 14:08
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Activar o no un input text con un input radio

Hola Rafael. Todo esto está en los tutoriales, pero hay algo que es totalmente cierto: la mayoría de los manuales están pensados para quien tiene idea de programación. Si vienen de otros rubros no siempre se entiende la lógica.

Te traduzco.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">

<script type="text/javascript">

/* ÉSTA ES LA FUNCIÓN QUE SE DISPARA CON EL CLICK.
divID ES EL VALOR PASADO DENTRO DE LA FUNCIÓN, QUE ES IGUAL AL id DEL div 
CLICKEADO (EN ESTE CASO: "algunDiv") */
function unhide(divID) {	alert("divID= "+ divID) //para confirmar

/* CREÁS LA VARIABLE item QUE REFERENCIA AL "DOCUMENTO 
QUE TIENE UN ELEMENTO CON UN id QUE SEA IGUAL AL VALOR QUE LE PASARON 
A divID " */
 var item = document.getElementById(divID);

/* AHORA UNA CONDICIÓN: "SI ESA VARIABLE item EXISTE 
(QUE REALMENTE APARECIÓ EN EL DOCUMENTO UN ELEMENTO CON id IGUAL 
AL VALOR QUE LE PASARON A divID) ", SE EJECUTA LO QUE HAY ENTRE LAS LLAVES 
PARA if. SI NO HUBIESE APARECIDO, NO SE HACÍA NADA */
 if (item) {

/* A item (QUE ERA EL ELEMENTO DENTRO DEL DOCUMENTO 
QUE TENÍA EL id COMO LE MANDARON A divID) SE LE ASIGNA UNA class 
SEGÚN OTRA CONDICIÓN:
SI item (ADEMÁS DE TODO) TIENE POR NOMBRE DE class "NoEstoy", 
ENTONCES SE LA CAMBIA POR "unhidden", EN CUALQUIER OTRO CASO 
(SI NO TIENE, O TIENE OTRA) SE LE CAMBIA POR "SiEstoy" */
 item.className=(item.className=='NoEstoy')?'unhidden':'SiEstoy';
 }

	alert("item.className= "+item.className) //para confirmar
}
</script>

</head>
<body>
<div onclick="unhide(this.id)" class="NoEstoy" id="algunDiv">Foros del Web.</div>
</body>
</html>
  #8 (permalink)  
Antiguo 08/11/2012, 16:05
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Activar o no un input text con un input radio

al la muy buena explicación de @furoya, te agrego

Cita:
Y esta forma de poner el signo de interrogación es algo parecido a un eval?
A la expresión de esa línea se la conoce como operador ternario, la sintásis es

condición ? "resultado si se cumple" : "resultado si no se cumple";

Es una forma abreviada de hacer un condicional, ejemplo

var a = 3;
if (a == 3){
alert('negro');
}else{
alert('rojo');
}

utilizando el o. ternario
var a = 3;
(a == 3)? 'negro': 'rojo';

En expresiones más complejas puede no resultar tan atractivo.
Este artículo extiende más el concepto, uso y rendimiento comparado con tras construcciones para establecer condiciones

http://www.etnassoft.com/2011/04/01/...io-javascript/

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 09/11/2012, 08:51
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Activar o no un input text con un input radio

¡Mil gracias por las explicaciones (y la paciencia))!

Supongo que "negro" y "rojo", (no en este ejemplo), a su vez pueden ser funciones también, no sólo cadenas de texto.
  #10 (permalink)  
Antiguo 09/11/2012, 09:17
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Activar o no un input text con un input radio

Cita:
Iniciado por Rafael Ver Mensaje
¡Mil gracias por las explicaciones (y la paciencia))!

Supongo que "negro" y "rojo", (no en este ejemplo), a su vez pueden ser funciones también, no sólo cadenas de texto.
Si, exactamente, 2 funciones ó una misma función con diferentes parámetros, ej:
Código Javascript:
Ver original
  1. function m_o(cdv) {
  2. var e = document.getElementById(cdv);
  3. e.style.display =(e.style.display=="block")?cTxt(cdv,tb,'none'):cTxt(cdv,tn,'block');
  4. }

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 09/11/2012, 17:18
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Activar o no un input text con un input radio

Ok. Voy a practicar un poco

Etiquetas: formulario, funcion, input, radio, select, txt
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 16:15.