es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo dos valores de un evento @change en un Vue

Tengo un elemento <select> desplegable que utiliza un arreglo con pares clave:valor. Me gustaría que el desplegable solo muestre los valores, pero al seleccionar tenga el evento @change que pase tanto el valor como la clave.

<select
  @change="
    formChanged(
      $event,
      $event.target.selectedIndex,
      $event.target.value,
      $event.target.key
    )
  "
  name="selectForm"
  id="selectForm"
  required
>
  <option
    v-for="(option, id) in getFormSelectArray()"
    :key="id" :value="option"
  >
    {{ option }}
  </option>
</select>

Mi función llamada a través de @change:

  formChanged(event, selectedIndex, value, id): void {
    console.log(
      'Selección de formulario cambiada: ' + event + '  ' + selectedIndex + ' ' + value, + ' ' + id
    );
  }

Mi función que genera el arreglo de datos:

public getFormSelectArray() {
// Mapeo de IDs a Nombres
const names = 'a, b, c';
const ids = '123, 456, 789';
let i;
let currentKey;
let currentVal;

const result = {}

for (i = 0; i < ids.split(',').length; i++) {
    currentKey = ids.split(',')[i];
    currentVal = names.split(',')[i];
    result[currentKey] = currentVal; 
}

for (const key in result) {
    const value = result[key];
}

      return result;
}

Mi salida:

Selección de formulario cambiada: [object Event]  0 a NaN

¿Cómo puedo mostrar el ID de 123 en lugar de NaN?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el ID de 123 en lugar de NaN, debes usar el parámetro selectedIndex para obtener el índice de la opción seleccionada y recuperar la clave correspondiente del array. Puedes modificar la función formChanged de la siguiente manera:

    formChanged(event, selectedIndex, value): void {
      const key = Object.keys(this.getFormSelectArray())[selectedIndex];
      console.log(`Formulario de selección cambiado: ${event} ${selectedIndex} ${value} ${key}`);
    }
    

    Aquí, primero obtenemos el array de claves usando Object.keys, luego usamos el parámetro selectedIndex para obtener el índice de la opción seleccionada. Finalmente, usamos este índice para recuperar la clave correspondiente del array de claves y lo registramos junto con otros parámetros.

Comments are closed.