Foros del Web » Programando para Internet » Jquery »

Varios input en uno

Estas en el tema de Varios input en uno en el foro de Jquery en Foros del Web. Buenas tardes, llevo un rato probando cosas y no encuentro una solución, yo tengo unos input tipo radio que para cada campo tengo 3 opciones: ...
  #1 (permalink)  
Antiguo 05/11/2015, 08:24
 
Fecha de Ingreso: abril-2015
Mensajes: 25
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Varios input en uno

Buenas tardes, llevo un rato probando cosas y no encuentro una solución, yo tengo unos input tipo radio que para cada campo tengo 3 opciones: 1, 2 y 3, los campos van a ser aleatorios puede haber en un resultado 5 como puede haber 20, ejemplo.
Papel= 1 | 2 | 3
Casa= 1 | 2 | 3

para elegir mediante un formulario radio.
resulta que ahora sin que el formulario se envie quiero recoger todos los input radio en uno y que vayan ordenador, si elijo en papel 1 y en casa 3 el input final tiene que ser "13" eso tiene que ser asi da igual el orden en el que seleccione los input radio. os adjunto la funcion en jquery que tengo y que no consigo hacer:

<script>
$(document).ready(function () {
var value="";
$("input").click(function () {
value=$("#campo1").val()+$("#campo2").val();
$("#inputfinal").val(value);
});
});
</script>

Si lo pongo como lo veis, pincho en el primer campo me sale en el final 1undefined, como que he pinchado en el primero y el segundo todavia esta vacío, si pincho en el segundo ya no se mueve nada y se queda en undefined, he probado varias cosas y no doy con la tecla a ver si podríais ayudarme.
Un saludo y racias
  #2 (permalink)  
Antiguo 05/11/2015, 12:20
 
Fecha de Ingreso: enero-2014
Ubicación: Navarra
Mensajes: 94
Antigüedad: 10 años, 2 meses
Puntos: 18
Respuesta: Varios input en uno

Hola.

Haz un if que compruebe si el valor es undefined y si no lo es haces la operacion:

Código Javascript:
Ver original
  1. $(document).ready(function () {
  2. var value="";
  3. $("input").click(function () {
  4. value1 = $("input[name='campo1']:checked").val();
  5. value2 = $("input[name='campo2']:checked").val();
  6. if (typeof value1 != 'undefined' &&  typeof value2 != 'undefined'){
  7. value = value1 + value2;
  8. $("#inputfinal").val(value);
  9. }
  10. });
  11. });

Saludos.

Última edición por sintel_1; 05/11/2015 a las 12:20 Razón: modificacion de codigo
  #3 (permalink)  
Antiguo 05/11/2015, 12:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Varios input en uno

Te aconsejo asignar una clase a todas las cajas de texto, la misma para todas. Luego, cuando se ejecute la función, declara una variable que contendrá una cadena vacía (solo las comillas), toma a los elementos que posean la clase que asignaste a las cajas de texto, recorre dicho conjunto, verificas si cada elemento está marcado y concatenas cada valor a la variable anteriormente declarada.

Código Javascript:
Ver original
  1. var final = "";
  2. $.each($(".clase"), function(){
  3.     if ($(this).prop("checked")){
  4.         final += $(this).val();
  5.     }
  6. });
  7. console.log(final); //Los valores concatenados

Incluso podrías ahorrar un poco de código utilizando la pseudoclase :checked con la cual puedes tomar directamente a los elementos marcados.

Código Javascript:
Ver original
  1. $.each($(".clase:checked"), function(){
  2.     //...
  3. });

Para este ejemplo, utilicé el método iterativo $.each(), pero puedes usar el que quieras.

Un saludo
__________________
«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; 05/11/2015 a las 13:04 Razón: Pseudoclase
  #4 (permalink)  
Antiguo 05/11/2015, 14:56
 
Fecha de Ingreso: abril-2015
Mensajes: 25
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Varios input en uno

Hola de nuevo, gracias por vuestras respuestas, no consigo que funcione, ahora mismo lo tengo puesto así:
Código PHP:
$(document).ready(function () {
                            var final = 
"";
                            $.
each($(".inputs:checked"), function(){
                                
                                    final += $(
this).val();
                                    
                                
                            });
                                                        $(
"#input2").val(final);
                            }); 
y le he puesto a cada radio button la clase inputs, en la consola de chrome no muestra ningún fallo, no se que hago mal.
Un saludo y gracias

Última edición por adriancarcamo; 05/11/2015 a las 14:57 Razón: Se me habia pasado una cosa del código
  #5 (permalink)  
Antiguo 05/11/2015, 15:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Varios input en uno

Sería mejor que asignes el resultado al <input> luego de que termine el bucle, pero de cualquier forma, debería de mostrar algo. Otra cosa que debes de tener en cuenta es que si esos elementos son cargados dinámicamente, no podrán ser afectados por el código que tienes ya que este último habrá cargado antes de añadir dichos elementos. Si ese fuera tu caso, deberías de ejecutar las instrucciones luego de que hayan cargado los elementos dinámicos.

De cualquier forma, te dejo este ejemplo para que lo compares con lo que tienes hecho y corrijas lo que haya que corregir.

Un saludo
__________________
«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
  #6 (permalink)  
Antiguo 05/11/2015, 15:17
 
Fecha de Ingreso: abril-2015
Mensajes: 25
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Varios input en uno

Gracias ya he conseguido hacerlo funcionar, voy a terminar de hacer las pruebas necesarias y si me funciona todo doy el tema por finalizado. Gracias

Etiquetas: Ninguno
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 08:19.