Foros del Web » Programando para Internet » Javascript »

Valor de checkbox a input

Estas en el tema de Valor de checkbox a input en el foro de Javascript en Foros del Web. Hola buenas tardes, tengo una pregunta bien tonta, es que tal vez me estgoy equivocando en la sintaxis, resulta que quiero pasar el valor de ...
  #1 (permalink)  
Antiguo 26/08/2009, 16:06
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Valor de checkbox a input

Hola buenas tardes, tengo una pregunta bien tonta, es que tal vez me estgoy equivocando en la sintaxis, resulta que quiero pasar el valor de un grupo de checkbox (solo los check seleccionados) a un solo campo de texto ya sea input o textarea.

tengo este codigo:

Código js:
Ver original
  1. function concepto(valor) {
  2.   var d = document.all;
  3.     d.registroConcepto.value += valor + ", "
  4. }

y me da bien el valor, pero si decido deseleccionar el checkbox, no solo no me quita el valor que agrego en el input, sino que encima de eso le vuelve a agregar el valor.

intente meterle un if pero mi sintaxis me fallo, alguien me puede ayudar con ello?? espero haberme explicado bien, gracias.
  #2 (permalink)  
Antiguo 26/08/2009, 16:42
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: Valor de checkbox a input

el problema es que estas agregando valores ya existentes aunque la opcion no este marcada. lo adecuado seria recorrer por todos los checkbox para determinar cuales estan marcados y apartir de ahi crear el string. cierto que implica un poco de trabajo adicional dado que cada vez se marca/desmarca una opcion tiene que recorrer todos los checkbox pero es la alternativa mas fiable.

la mejor alternativa que se me ocurre es tener todos los checkbox dentro de un elemento y asignarle un ID, de modo que si necesitias aplicar algun diseño especifico no te veas limitado en la forma de obtener el grupo de checkbox.
Código:
<div id="checkboxes">
<input type="checkbox" onclick="concepto();" ... />
<input type="checkbox" onclick="concepto();" ... />
<input type="checkbox" onclick="concepto();" ... />
...
</div>
para obtener el grupo de checkbox obtienes referencia del <DIV> y luego usas la funcion getElementsByTagName. la funcion devuelve una coleccion que puedes recorrerla con un bucle
Código:
function concepto(){
var string = "", boxes = document.getElementById("checkboxes").getElementsByTagName("input");
for(var i = 0; i < boxes.length; i++)if(boxes[i].checked)string += boxes[i].value + ", ";
input.value = string; // siendo input la referencia al campo de texto;
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 26/08/2009, 17:20
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Valor de checkbox a input

Hola zerokilled gracias por tu comentario, lo realice pero no me funciono mira este es mi codigo completo:

Código html:
Ver original
  1. <script language="JavaScript">
  2. function concepto(valor) {
  3.   var d = document.all;
  4.     d.registroConcepto.value += valor + ", "
  5. }
  6. </head>
  7. <p>Valor 1 <input type="checkbox" value="valor 1" onClick="concepto(this.value)" /></p>
  8. <p>Valor 2 <input type="checkbox" value="valor 2" onClick="concepto(this.value)" /></p>
  9. <textarea readonly="true" id="registroConcepto"></textarea>
  10. </body>
  11. </html>
  #4 (permalink)  
Antiguo 26/08/2009, 17:30
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: Valor de checkbox a input

tu codigo no refleja los cambios que te he mencionado. lo tienes casi todo, es simple cuestion de adaptar y agregar.
Código:
<html>
<head>
<script type="text/javascript">
function concepto(){
var string = "", boxes = document.getElementById("checkboxes").getElementsByTagName("input");
for(var i = 0; i < boxes.length; i++)if(boxes[i].checked)string += boxes[i].value + ", ";
document.getElementById("registroConcepto").value = string.replace(/\,\x20$/, ""); // siendo input la referencia al campo de texto;
}
</script>
</head>
<body>
<form>
<div id="checkboxes">
<p>Valor 1 <input type="checkbox" value="valor 1" onClick="concepto()" /></p>
<p>Valor 2 <input type="checkbox" value="valor 2" onClick="concepto()" /></p>
<textarea readonly="readonly" id="registroConcepto"></textarea>
...
</div>
</form>
</body>
</html>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 26/08/2009, 17:39
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Valor de checkbox a input

oooh ya ok, me estaba equivocando con el nombre del div y readonly, una disculapa, si esta ok muchas gracias por la ayuda!
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 01:00.