JavaScript - Construir en un input lo que se va seleccionando en selects

 
Vista:
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Construir en un input lo que se va seleccionando en selects

Publicado por Eduardo (176 intervenciones) el 05/12/2023 23:21:36
Hola a todos espero estén bien... existe alguna manera de ir agregando a un input lo que se va seleccionando en unos selects.. algo así


SELECTFORO

de modo que sea algo así


SELECTFOROgiff

Mil gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ivan

Construir en un input lo que se va seleccionando en selects

Publicado por Ivan (118 intervenciones) el 08/12/2023 17:20:14
Hola,

se puede hacer con JavaScript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formulario con Campos Select</title>
</head>
<body>
 
  <form>
    <label for="select1">Select 1:</label>
    <select id="select1" onchange="updateInput('select1')">
      <option value=""></option>
      <option value="opcion1">Opción 1</option>
      <option value="opcion2">Opción 2</option>
      <option value="opcion3">Opción 3</option>
      <option value="opcion4">Opción 4</option>
    </select>
 
    <label for="select2">Select 2:</label>
    <select id="select2" onchange="updateInput('select2')">
      <option value=""></option>
      <option value="opcion5">Opción 5</option>
      <option value="opcion6">Opción 6</option>
      <option value="opcion7">Opción 7</option>
      <option value="opcion8">Opción 8</option>
    </select>
 
    <label for="select3">Select 3:</label>
    <select id="select3" onchange="updateInput('select3')">
      <option value=""></option>
      <option value="opcion9">Opción 9</option>
      <option value="opcion10">Opción 10</option>
      <option value="opcion11">Opción 11</option>
      <option value="opcion12">Opción 12</option>
    </select>
 
    <label for="select4">Select 4:</label>
    <select id="select4" onchange="updateInput('select4')">
      <option value=""></option>
      <option value="opcion13">Opción 13</option>
      <option value="opcion14">Opción 14</option>
      <option value="opcion15">Opción 15</option>
      <option value="opcion16">Opción 16</option>
    </select>
 
    <label for="resultInput">Resultado:</label>
    <input type="text" id="resultInput" readonly>
  </form>
 
  <script>
    function updateInput(selectId) {
      // Obtener el valor seleccionado del select
      var selectedValue = document.getElementById(selectId).value;
 
      // Actualizar el valor del campo de entrada
      document.getElementById('resultInput').value += selectedValue + ' ';
    }
  </script>
</body>
</html>

Espero que te sirva,

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo Arroyo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Construir en un input lo que se va seleccionando en selects

Publicado por Eduardo Arroyo (176 intervenciones) el 08/12/2023 17:49:32
Funciona!! pero una consulta al cambiar una opcion de un select por ejemplo el numero 2 sigue adicionando a la cadena del input.. seria buenoq ue cambie la opcion agregada por el y no adicionar mas al input???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

Construir en un input lo que se va seleccionando en selects

Publicado por Ivan (118 intervenciones) el 09/12/2023 10:08:24
Hola,

si cada select sólo puede mostrar un valor en vez de acumularse puedes hacerlo manteniendo un registro de selects.

1
2
3
4
5
6
7
8
9
10
11
12
<script>
  // Mantener un registro de elementos seleccionados
  let selectedElements = {};
 
  function updateInput(selectId) {
      // Actualizar el valor del campo de entrada en el objeto
      selectedElements[selectId] = document.getElementById(selectId).value;
 
      // Actualizar el valor del campo de entrada
      document.getElementById('resultInput').value = Object.values(selectedElements).join(' ');
  }
</script>

Ahora sólo mostrará un valor por cada select.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Construir en un input lo que se va seleccionando en selects

Publicado por Eduardo (176 intervenciones) el 09/12/2023 13:44:45
woww que maravilla mil graciasss por responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Construir en un input lo que se va seleccionando en selects

Publicado por Eduardo (176 intervenciones) el 09/12/2023 14:15:16
Hola Ivan mil gracias por responder ahora otra consulta, si tengo un input entre los selects como se colocaria para que llame la funcion y agregue a el resultInput el texto escrito asi??

onkeypress="updateInput('select2')"

por que lo hago y no me funciona..

gracias por su ayuda!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

Construir en un input lo que se va seleccionando en selects

Publicado por Ivan (118 intervenciones) el 09/12/2023 14:47:28
Hola,

En este caso un input se puede añadir igual que los select, pero siempre debes dar un id único a cada elemento.

1
2
<label for="input1">Input 1:</label>
<input type="text" id="input1" onchange="updateInput('input1')">

gracias a ti, un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Construir en un input lo que se va seleccionando en selects

Publicado por Eduardo (176 intervenciones) el 09/12/2023 15:29:39
Por ultimo me pordrias ayudar con esto aca te pongo el codigo que llevo, como hago para que el ultimo valor que agrego del ultimo input se ponga un guion - separador antes de lo q se escriba en el por ejemplo quede asi... solo si se escribe en ese campo un valor..

CL 33 C # 18-30

el guion separador entre el 18 y el 30 que salga en automatico al agregar un valor en ese ultimo campo!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<style type="text/css">
.texy {	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: bold;
}
</style>
</head>
 
<body>
<span class="texy2" style="float:left;" >
<select style="font-size:10px; text-align:left" name="dir1" class='mi-selector'  id="dir1" onchange="updateInput('dir1')" required="required">
  <option value=""></option>
  <option value="CL">CALLE</option>
  <option value="CR">CARRERA</option>
  <option value="AV">AVENIDA</option>
  <option value="DG">DIAGONAL</option>
</select>
<input name="dir2" type="text" required="required" id="dir2"  style="text-align:center; width:40px" value="" size="5" onchange="updateInput('dir2')" onkeypress="return valideKey(event);" />
<select style="font-size:10px; text-align:left; width:60px" name="dir3" class='mi-selector' id="dir3" onchange="updateInput('dir3')">
  <option value=""></option>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>
<select style="font-size:10px; text-align:left" name="dir4" class='mi-selector'  id="dir4" required="required" onchange="updateInput('dir4')">
  <option value=""> </option>
  <option value="#">#</option>
  <option value="CL">CALLE</option>
  <option value="CR">CARRERA</option>
  <option value="AV">AVENIDA</option>
</select>
<input name="dir5"type="text" required="required" id="dir5"  style="text-align:center; width:40px" value="" size="5" onkeypress="return valideKey(event);" onchange="updateInput('dir5')" />
<select style="font-size:10px; text-align:left;width:60px" name="dir6" class='mi-selector' id="dir6" onchange="updateInput('dir6')">
  <option value=""></option>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>
&nbsp;-&nbsp;</span><span class="texy2" style="float:left;">
<input name="dir7"type="text" id="dir7"  style="text-align:center; width:50px" value="" size="5" onkeypress="return valideKey(event);" onchange="updateInput('dir7')" />
</span><br />
<span class="texy">
<br />
<input name="dircompleta" type="text" id="dircompleta" value="" size="80" readonly="readonly" />
            <script>
  // Mantener un registro de elementos seleccionados
  let selectedElements = {};
 
  function updateInput(selectId) {
      // Actualizar el valor del campo de entrada en el objeto
      selectedElements[selectId] = document.getElementById(selectId).value;
 
      // Actualizar el valor del campo de entrada
      document.getElementById('dircompleta').value = Object.values(selectedElements).join(' ');
  }
</script>
</span>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

Construir en un input lo que se va seleccionando en selects

Publicado por Ivan (118 intervenciones) el 09/12/2023 18:17:38
Hola de nuevo,

la cosa se va complicando pero ahora que veo la utilidad del script he añadido algunas mejoras.

Para añadir algún dato especial en alguno de los inputs o selects se puede modificar la función updateInput para capturar ese id concreto y realizar las modificaciones. En este caso entiendo que te refieres a id="dir7".

También veo que el orden en que se muestran los datos es importante, de modo que si se modifican los inputs/selects de forma aleatoria, siempre se tiene que mostrar en el mismo orden.

Juntándolo todo el código JavaScript es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script>
  let selectedElements = {}; // Registro de datos
  let orden = ['dir1', 'dir2', 'dir3', 'dir4', 'dir5', 'dir6', 'dir7']; // Orden de visionado
 
  // Obtenemos los datos
  function updateInput(selectId) {
 
    // Captura el valor del campo
    let itemValue = document.getElementById(selectId).value;
 
    // Comprobamos si es dir7
    if (selectId === 'dir7') {
      // Si esta vacío borramos, si tiene valor añadimos guión
      if (itemValue === '') delete selectedElements[selectId];
      else selectedElements[selectId] = '- ' + itemValue;
      // En el resto de casos añadimos valor
    } else selectedElements[selectId] = itemValue;
 
    // Resultado visual ordenado
    let visualResult = [];
    // Obtenemos los datos en orden
    for (let id of orden) {
      // Si existe el índice añadimos
      if (selectedElements[id]) {
        visualResult.push(selectedElements[id]);
      }
    }
 
    // Actualiza el valor del campo de salida
    document.getElementById('dircompleta').value = Object.values(visualResult).join(' ');
  }
</script>

A partir de aquí puedes modificar el orden de salida de los datos en el Array orden y añadir más inputs y casos especiales como con dir7 en otros condicionales. Si son muchos tal vez sería mejor un switch.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo
Val: 159
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Construir en un input lo que se va seleccionando en selects

Publicado por Eduardo (176 intervenciones) el 09/12/2023 19:10:40
WOWWWWWWWWWWWWW!!! magnifico me leiste la mente!! tal cual es lo que deseaba mil graciasss!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar