Este código solo agrega el valor de la etiqueta de selección a la entrada.

function myFunction(e) {
    document.getElementById("myid").value = e.target.value
}

Quiero agregar texto

Este código no funciona:

function myFunction(e) {
        document.getElementById("myid").value = e.target.text
    }

Código HTML:

<select onchange="myFunction(event)">
    <option value="">Please select...</option>
    <option value="0">Text 1</option>
    <option value="1">Text 2</option>
</select>
<input type="text" id="myid">
0
Mahdi Hosseinpour 11 oct. 2019 a las 12:21

3 respuestas

La mejor respuesta

Use e.target.options[e.target.selectedIndex].text para obtener el valor de texto de la opción

function myFunction(e) {
        document.getElementById("myid").value = e.target.value === "" ? "" : e.target.options[e.target.selectedIndex].text
    }
<select onchange="myFunction(event)">
    <option value="">Please select...</option>
    <option value="0">Text 1</option>
    <option value="1">Text 2</option>
</select>
<input type="text" id="myid">
1
Dhaval Pankhaniya 11 oct. 2019 a las 09:35

Tu quieres esto.

Estoy pasando la selección en sí y usando la mano para llegar al contenido textual

También pruebo para asegurarme de que el campo no contenga "Seleccione ..."

function myFunction(sel) {
  document.getElementById("myid").value = sel.selectedIndex < 1 ? "" : sel.options[sel.selectedIndex].text; // or .textContent
}
<select onchange="myFunction(this)">
  <option value="">Please select...</option>
  <option value="0">Text 1</option>
  <option value="1">Text 2</option>
</select>
<input type="text" id="myid">

Aquí hay una versión discreta

document.getElementById("sel").addEventListener("change", function() {
  document.getElementById("myid").value = this.selectedIndex < 1 ? "" : this.options[this.selectedIndex].text; // or .textContent
})
<select id="sel">
  <option value="">Please select...</option>
  <option value="0">Text 1</option>
  <option value="1">Text 2</option>
</select>
<input type="text" id="myid">
1
mplungjan 11 oct. 2019 a las 09:41

Use textContent y en lugar de pasar el evento pase el elemento usando la palabra clave this

function myFunction(e) {
    document.getElementById("myid").value = e.options[e.selectedIndex].textContent
    }
<select onchange="myFunction(this)">
    <option value="">Please select...</option>
    <option value="0">Text 1</option>
    <option value="1">Text 2</option>
</select>
<input type="text" id="myid">
1
ellipsis 11 oct. 2019 a las 09:31