> Faqs > Calcular un valor combinando las opciones elegidas en dos <select>

Calcular un valor combinando las opciones elegidas en dos <select>

Gracias por la ayuda.

tengo dos HTML Select para combinar su informacion i depende de esa selecion mostrar un precio ejemplo:

  • Primer select opciones: 1 2 3 4
  • Segundo select Opciones: a b c d

el usurario podra hacer las combinaciones que desee i el resultado sera diferente

ejemplo:

Si el usuario elige:

  • 1c resultado $100
  • 1a Resultado $45

Asi con todos

¿Saben de alguna guia o manual donde pueda guiarme?

Gracias

Responder la pregunta
Editar Hacer otra preguntaPreguntar

Respuestas

Basicamente seria hacer el primer select con un evento onchange Te dejo este código que te pueda servir de refencia

<select id="obj">
<option>--- Objeto  ---</option>
<option value=-1> item -1</option>
<option value=1> item 1</option>
<option value=2> item 2</option>
<option value=3> item 3</option>
</select>


<select id="el" width="50px">
<option>--- SubElemento  ---</option>
</select>

<script>
sel = document.querySelector("#obj");
	
	
sel.addEventListener("change" , function(){  

	sub = document.querySelector("#el");
	sub.innerHTML="";
	

	//Datos para el segundo select de ejemplo
switch(sel.value){
	case "-1":
		array=["-1" ,"-2 ","-3","-4" ];
	break;

	case "1":
		array=["1" ,"2 ","3","4" ];
	break;
	case "2":
		array=["uno","dos","tres"];
	break;
	case "3":
		array=["UNO","DOS","TRES"];
	break;
	default:
		console.log(sel.value);
		array=["--- SubElemento  ---"];
	}
	
	
	console.log(array);
		//Rellena el Select segundo a traves de un array
		selectFill(sub, array);

});


//Esta funcion te rellena el Select Secundario
function selectFill(sel, array){

	for(v in array){
		var option = document.createElement("option");
		option.text = array[v];
		sel.add(option);
	}
}
	</script>
	

Espero que te ayude.

Jorge
20 1 2

Debes crear los dos select en HTML a los que le asignas eventos change. Luego haces en los manejadores de eventos las operaciones que sean necesarias para tus cálculos.

Un ejemplo básico podría ser:

  • El HTML
<select id="sel1">
    <option value="-">Seleccionar</option>
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c">C</option>
</select>
<select id="sel2">
    <option value="-">Seleccionar</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<div id="res"> Selecciona valores en los select</div>
  • El Javascript
function calcularValoresRespuesta(e) {
  var valorSelect1 = document.getElementById("sel1").value;
  var valorSelect2 = document.getElementById("sel2").value;
  var elemRespuesta = document.getElementById("res");
  if(valorSelect1 == '-' || valorSelect2 == '-') {
    elemRespuesta.innerText = 'Debes seleccionar un valor en ambos select.';
  }
  else {
    // Haces tu cálculo
    elemRespuesta.innerText = "El valor es la combinación entre " + valorSelect1 + " y " + valorSelect2;
  }
}

document.getElementById("sel1").addEventListener("change", calcularValoresRespuesta);
document.getElementById("sel2").addEventListener("change", calcularValoresRespuesta);
Borja
111 2 7 8

Sobre este tema tienes una serie de artículos en DesarrolloWeb.com que te podrán servir como guía.

Probablemente debas comenzar por el artículo de Control de campos select con Javascript, que explica un poco las bases.

En el manual de formularios y Javascript también tienes artículos destinados a los campos select.

Otro ejemplo típico donde podrás sacar información y practicar, entendiendo el comportamiento medianamente avanzado de los campos <select> son los selects dependientes (al seleccionar una opción en un select se generan otras opciones en otro select). Puedes usar el buscador para encontrarlos fácilmente, por "select combinados", o "select dependientes" o "select asociados".

Hay ejemplos genéricos y también algunos están asociados a tecnologías concretas.

Y hay otras referencias... si buscas encuentras más.

Miguel Angel
1441 66 95 5