Foros del Web » Programando para Internet » Javascript »

Radio buttons que controlen caracteres de textarea

Estas en el tema de Radio buttons que controlen caracteres de textarea en el foro de Javascript en Foros del Web. Saludos a todos. Estoy intentando hacer un script en el que seleccionando un radio me deje escribir un número de caracteres determinado, en función del ...
  #1 (permalink)  
Antiguo 03/04/2009, 02:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Radio buttons que controlen caracteres de textarea

Saludos a todos.

Estoy intentando hacer un script en el que seleccionando un radio me deje escribir un número de caracteres determinado, en función del radio que se pulse.

Estuve mirando y encontré rápidamente el textarea que sólo deje introducir un número de caracteres, pero al intentarlo hacer desde controlado desde un radio button, me falla, aunque mi nivel de javascript es bastante malo y seguramente estoy haciendo algo mal.

Este es mi código.

Código javascript:
Ver original
  1. <script type="text/javascript">
  2.     function habilita (val)
  3.     {
  4.         document.forms[0].element_3.disabled = false;
  5.         num_caracteres_permitidos = val
  6.     }
  7.  
  8.     if (document.forms[0].element_3.disabled = false)
  9.     {
  10.         contenido_textarea = ""
  11.  
  12.         function valida_longitud ()
  13.         {
  14.             num_caracteres = document.forms[0].element_3.value.length
  15.  
  16.             if (num_caracteres > num_caracteres_permitidos){
  17.                 document.forms[0].element_3.value = contenido_textarea
  18.             }else{
  19.                 contenido_textarea = document.forms[0].element_3.value
  20.             }
  21.  
  22.             if (num_caracteres >= num_caracteres_permitidos){
  23.                 document.forms[0].element_3_2.style.color="#ff0000";
  24.             }else{
  25.                 document.forms[0].element_3_2.style.color="#000000";
  26.             }
  27.  
  28.             cuenta ()
  29.         }
  30.         function cuenta (){
  31.             document.forms[0].caracteres.value=document.forms[0].texto.value.length
  32.         }
  33.     }
  34. </script>

y el HTML

Código HTML:
Ver original
  1. <li id="li_8" >
  2.     <label class="description" for="element_8">Seleccione tipo de anuncio:</label>
  3.     <span>
  4.         <input id="element_8_1" name="element_8_1" class="element radio" type="radio" value="1" onclick="habilita(150)" />
  5.         <label class="choice" for="element_8_1">1/3 Página  :: 60 €</label>
  6.         <input id="element_8_2" name="element_8_2" class="element radio" type="radio" value="2" onclick="habilita(300)" />
  7.         <label class="choice" for="element_8_2">1/2 Página :: 90 €</label>
  8.         <input id="element_8_3" name="element_8_3" class="element radio" type="radio" value="3" onclick="habilita(300)" />
  9.         <label class="choice" for="element_8_3">1 Página :::: 180 €</label>
  10.     </span>
  11.     <p class="guidelines" id="guide_8"><small>Seleccione uno de los tres tipos de anuncio. En caso de querer otro formato o una campaña semestral o anual póngase en contacto con nosotros en el correo <a href="mailto:[email protected]">[email protected]</a></small></p>
  12. </li>
  13. <li id="li_3" >
  14.     <label class="description" for="element_3">Texto del anuncio</label>
  15.     <div><textarea id="element_3" name="element_3" class="element textarea small" onkeydown="valida_longitud()" onkeyup="valida_longitud()" disabled="disabled"></textarea></div>
  16.     <div>
  17.         <input id="element_3_2" name="element_3_2" class="element text" value="" type="text">
  18.         <label for="element_3_2">Caracteres</label>
  19.     </div>
  20.     <p class="guidelines" id="guide_3"><small>Escriba el texto del anuncio en castellano. Nosotros nos encargamos de traducirlo al inglés.</small></p>
  21. </li>

Básicamente lo que quiero es que al pinchar sobre un radio, se habilite el textarea y le de a la variable num_caracteres_permitidos un valor para permitir introducir caracteres.

Gracias a todos por las aportaciones y un saludo.
  #2 (permalink)  
Antiguo 03/04/2009, 10:49
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Radio buttons que controlen caracteres de textarea

Bueno, tras diversas pruebas he podido darme cuenta que había cosas (y sigue habiendo, porque sigue sin funcionar, vaya) que no estaban bien.

En fin, sea como sea, el código que tengo ahora mismo es así:

Código JavaScript:
Ver original
  1. <script type="text/javascript">
  2.     function valida_longitud ()
  3.     {
  4.         num_caracteres = getElementById("element_3_1").value.length
  5.         num_caracteres_permitidos = getElementById("element_8").value
  6.  
  7.         if (num_caracteres_permitidos == 1)
  8.             num_caracteres_permitidos = 150
  9.         else
  10.             num_caracteres_permitidos = 300
  11.  
  12.         if (num_caracteres > num_caracteres_permitidos){
  13.             getElementById("element_3_1").value = contenido_textarea
  14.         }else{
  15.             contenido_textarea = getElementById("element_3_1").value
  16.         }
  17.  
  18.         if (num_caracteres >= num_caracteres_permitidos){
  19.             getElementById("element_3_2").style.color="#ff0000";
  20.         }else{
  21.             getElementById("element_3_2").style.color="#000000";
  22.         }
  23.  
  24.         cuenta ()
  25.     }
  26.  
  27.     function cuenta (){
  28.         document.getElementById("element_3_2").value=document.getElementById("element_3_1").value.length
  29.     }
  30. </script>

El HTML, por su parte, lo tengo así:

Código HTML:
Ver original
  1. <li id="li_8" >
  2.     <label class="description" for="element_8">Seleccione tipo de anuncio:</label>
  3.     <span>
  4.         <input id="element_8" name="element_8" class="element radio" type="radio" value="1" onclick="getElementById('element_3_1').disabled = !this.checked" />
  5.         <label class="choice" for="element_8_1">1/3 Página  :: 60 €</label>
  6.         <input id="element_8" name="element_8" class="element radio" type="radio" value="2" onclick="getElementById('element_3_1').disabled = !this.checked" />
  7.         <label class="choice" for="element_8_2">1/2 Página :: 90 €</label>
  8.         <input id="element_8" name="element_8" class="element radio" type="radio" value="3" onclick="getElementById('element_3_1').disabled = !this.checked" />
  9.         <label class="choice" for="element_8_3">1 Página :::: 180 €</label>
  10.     </span>
  11. </li>
  12. <li id="li_3" >
  13.     <label class="description" for="element_3_1">Texto del anuncio</label>
  14.     <div><textarea id="element_3_1" name="element_3_1" class="element textarea small" onkeydown="valida_longitud()" onkeyup="valida_longitud()"></textarea></div>
  15.     <div>
  16.         <input id="element_3_2" name="element_3_2" class="element text" value="" type="text">
  17.         <label for="element_3_2">Caracteres</label>
  18.     </div>
  19. </li>

Básicamente el textarea es element_3_1, el input element_3_2 debería mostrarme el número de caracteres restantes y element_8 es el radio button seleccionado.

El caso es que ni me desactiva el textarea hasta que selecciono un radio button, ni me indica el número máximo de caracteres...

¿Alguien sabría decirme que es lo que estoy haciendo mal? ¿Será que no lo estoy enfocando bien y habría maneras más fáciles?

Muchas gracias a todos por descontado y un saludo.

  #3 (permalink)  
Antiguo 03/04/2009, 13:26
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Radio buttons que controlen caracteres de textarea

Hola

Prueba así

Código javascript:
Ver original
  1. var num_caracteres_permitidos = "";
  2.     function habilita (val){
  3. num_caracteres_permitidos = val;
  4.       if (document.forms[0].element_3_1.disabled = true)
  5.     {
  6.         document.forms[0].element_3_1.disabled = false;
  7. }
  8. }
  9.  
  10.  
  11. function valida_longitud() {
  12.             num_caracteres = document.forms[0].element_3_1.value.length
  13.  
  14.             if (num_caracteres > num_caracteres_permitidos){
  15.                 document.forms[0].element_3_1.value = contenido_textarea
  16.             }else{
  17.                 contenido_textarea = document.forms[0].element_3_1.value
  18.             }
  19.  
  20.             if (num_caracteres >= num_caracteres_permitidos){
  21.                 document.forms[0].element_3_2.style.color="#ff0000";
  22.             }else{
  23.                 document.forms[0].element_3_2.style.color="#000000";
  24.             }
  25.             cuenta ()
  26.         }
  27.         function cuenta (){
  28.             document.forms[0].element_3_2.value=document.forms[0].element_3_1.value.length
  29.         }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 06/04/2009, 03:29
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Radio buttons que controlen caracteres de textarea

Gracias por tu aporte, Adler, gracias a él al menos me deja escribir en el textarea. Pero sigue sin permitirme el número máximo de caracteres. (Vamos, que el número de caracteres que me deja escribir por defecto es cero... Entiendo que el valor que está mandando a la variable num_caracteres_permitidos es nulo.

¿A alguien se le ocurre alguna idea de por qué?

Muchas gracias a todos y un saludo.
  #5 (permalink)  
Antiguo 06/04/2009, 06:47
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Radio buttons que controlen caracteres de textarea

Hola

No se que error estás cometiendo pero funciona en FF y IE

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 13:21.