Foros del Web » Programando para Internet » Javascript »

Fusionar varios JavaScript en un formulario

Estas en el tema de Fusionar varios JavaScript en un formulario en el foro de Javascript en Foros del Web. Buenas, Voy al grano. Por un lado tengo varios scripts por ejemplo: Nombre de hombres: Código: <script language="JavaScript"> function hombre() { var nombres=[ "Carlos","Juan","Antonio" ]; ...
  #1 (permalink)  
Antiguo 03/12/2014, 13:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 0
Fusionar varios JavaScript en un formulario

Buenas,

Voy al grano. Por un lado tengo varios scripts por ejemplo:

Nombre de hombres:

Código:
<script language="JavaScript">
		function hombre() {
		var nombres=[
		"Carlos","Juan","Antonio"
		]; // ...
		
		var rnd2=Math.floor(Math.random()*nombres.length);
		document.write(''+nombres[rnd2]);
		}
		</script>
Nombre de mujeres:

Código:
<script language="JavaScript">
		function mujer() {
		var nombres=[
		"Ana","Luisa","Carmen"
		]; // ...
		
		var rnd2=Math.floor(Math.random()*nombres.length);
		document.write(''+nombres[rnd2]);
		}
		</script>
Ahora bien, quisiera que desde un formulario html el usuario pudiera elegir "Hombre" o "Mujer", y que luego de apretar un botón, se consiga como resultado, uno de los valores aleatorios que están en el script.

En líneas generales es esto, aunque quisiera utilizar muchos más datos y lograr un resultado aleatorio pero condicionado por las variables que seleccione en el formulario.

¿Alguien me puede ayudar a solucionarlo? Muchas gracias.
  #2 (permalink)  
Antiguo 03/12/2014, 13:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Fusionar varios JavaScript en un formulario

Ambas funciones realizan las mismas instrucciones, solo varían los datos. Lo que podrías hacer es tener ambos arrays en una función pero con nombres distintos, luego, desde el formulario, envías un valor hacia la función, por ejemplo, 'M' o 'F' (masculino o femenino) y, según sea este valor, tomas el valor del array que corresponda.

Saludos
__________________
«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
  #3 (permalink)  
Antiguo 03/12/2014, 14:04
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Fusionar varios JavaScript en un formulario

sólo por aportar otra opción
Cita:
var nombres={hombre: ["Carlos","Juan","Antonio"],
mujer: ["Ana","Luisa","Carmen"]};

var rnd2=Math.floor(Math.random()*nombres['hombre'].length);

console.log(nombres['hombre'][rnd2]);
cualquiera de las 2 son válidas. incluso una tercera, cuarta y quinta serían válidas
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 03/12/2014, 14:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Fusionar varios JavaScript en un formulario

Muchas gracias por aclararme las dudas. Pero lo que no se, y aquí radica la mayor de mis ignorancias al respecto, es cómo llamarlo desde el formulario para que me devuelva la fusión de todos los scripts o de las variables en cuestión. Si me podrían graficarlo con un ejemplo, mi agradecimiento será infinito.

Gracias.
  #5 (permalink)  
Antiguo 03/12/2014, 15:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Fusionar varios JavaScript en un formulario

Creo que no estás entendiendo. La fusión de la que comentas, las ves plasmada en lo que tanto IsaBelM como yo te hemos explicado. Ahora, te pregunto, ¿sabes cómo invocar a una función?

Saludos
__________________
«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 04/12/2014, 04:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Fusionar varios JavaScript en un formulario

Efectivamente, sus excelentes respuestas responden a fusionar el script, pero mi problema es cómo llamarlo desde el formulario HTML, lo que técnicamente debe ser "invocar la función".

Lo que tengo que hacer, básicamente, es colocar el script en el head y llamarlo desde un formulario, por ejemplo, así:

Código:
<form id="form1" name="form1" method="post" action="">
  <p>
    <label>
      <input type="radio" name="RadioGroup1" value="hombre" id="RadioGroup1_0" />
      Hombre</label> 
    /
    <label>
      <input type="radio" name="RadioGroup1" value="mujer" id="RadioGroup1_1" />
    Mujer</label>
    <br />
  </p>
  <input name="Generar" type="submit" onClick="funcion" value="Generar" />
</form>
Y que al presionar el botón me de como resultado el script. Pero no tengo idea de cómo llamar al javascript desde el formulario.

Mil gracias!
  #7 (permalink)  
Antiguo 04/12/2014, 06:06
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Fusionar varios JavaScript en un formulario

Podés hacer algo como esto y simplificar el código :)

Código HTML:
 <form id="form1" name="form1" method="post" action="#">
        <label>
          <input type="radio" name="RadioGroup1" value="hombre" id="RadioGroup1_0" checked="checked" />
          Hombre
        </label> 
        <label>
          <input type="radio" name="RadioGroup1" value="mujer" id="RadioGroup1_1" />
            Mujer
        </label>
        <input name="Generar" type="submit" value="Generar" />
    </form>
    <script type="text/javascript">
        var formulario = document.getElementById('form1');  
        formulario.onsubmit = function(e) {
            e.preventDefault();

            var radioSelect = document.querySelector('input[name="RadioGroup1"]:checked').value;
            
            var arrayHombres = ["Carlos","Juan","Antonio"];
            var arrayMujeres = ["Ana","Luisa","Carmen"];

            var arrayFinal = (radioSelect == 'mujer') ? arrayMujeres : arrayHombres;
            var rnd2 = Math.floor(Math.random()*arrayFinal.length);
            document.write(''+arrayFinal[rnd2]);
        }
    </script> 
Saludos
  #8 (permalink)  
Antiguo 04/12/2014, 06:58
 
Fecha de Ingreso: octubre-2008
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Fusionar varios JavaScript en un formulario

Qué bien, muchas gracias GeekGirl!

¿Pregunto ahora, si quiero añadir más campos (<labels>) eso cambiaría la fórmula no?

¿Cómo sería?

Mil gracias.
  #9 (permalink)  
Antiguo 04/12/2014, 07:26
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Fusionar varios JavaScript en un formulario

veamos. no parece que quieras enviar el formularios, por lo que no tiene sentido el input#submit. en caso que quieras enviarlo déjalo.

por otro lado, la invocación a la función no debería ser al pulsar sobre el radio??
Cita:
window.addEventListener('load', function() {

var nombres={hombre: ["Carlos","Juan","Antonio"],
mujer: ["Ana","Luisa","Carmen"]};

Array.prototype.forEach.call(document.querySelecto rAll('input[type="radio"]'), function(elem) {

elem.addEventListener('click', function() {
var rnd2=Math.floor(Math.random()*nombres[this.value].length);

console.log(nombres[this.value][rnd2]);
}, false);
});
},false);


<form id="form1" name="form1" method="post" action="">
<p>
<label>
<input type="radio" name="RadioGroup1" value="hombre" id="RadioGroup1_0" />
Hombre</label>
/
<label>
<input type="radio" name="RadioGroup1" value="mujer" id="RadioGroup1_1" />
Mujer</label>
<br />
</p>
<input name="Generar" type="submit" value="Generar" />
</form>
ahora puede añadir todos los radios que quieras
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #10 (permalink)  
Antiguo 04/12/2014, 08:52
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Fusionar varios JavaScript en un formulario

Cita:
Iniciado por gjherrerac Ver Mensaje
Qué bien, muchas gracias GeekGirl!

¿Pregunto ahora, si quiero añadir más campos (<labels>) eso cambiaría la fórmula no?

¿Cómo sería?

Mil gracias.
Depende lo que quieras hacer. Es para más nombres o para otras opciones?
  #11 (permalink)  
Antiguo 04/12/2014, 09:51
 
Fecha de Ingreso: octubre-2008
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Fusionar varios JavaScript en un formulario

Muchas gracias IsaBelM y GeekGirl. Yo busco hacer un formulario con más opciones.

Aunque no quiero utilizar sólo radios, sino también las otras opciones que ofrece la creación de formularios: menú desplegables o cajas de selección, según sea

¿Es posible?

Muchas gracias.

Última edición por gjherrerac; 07/12/2014 a las 10:10

Etiquetas: formulario, fusionar, html, valor
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 11:28.