¿Cómo obtener el “valor” de un FilteringSelect en dojo?

Estoy usando dijit.form.FilteringSelect para proporcionar una forma de seleccionar valores de un . El problema es que cuando se usa dojo, se devuelve la etiqueta en lugar del valor de la s.

Por ejemplo:

One
Two

Dojo está devolviendo el “uno” literal si se selecciona esa opción, en lugar del valor para esa opción, “1”. Lo mismo es cierto para “dos” y “2”.

Si dojo se elimina de este elemento, el valor se devuelve como se esperaba.

La forma dojo de hacer esto sería usar dijit.byId (‘yourDijitId’). Attr ().

Para obtener el valor que desea:

 dijit.byId('yourDijitId').attr('value'); 

Para obtener el valor que se muestra en el filtro, seleccione:

 dijit.byId('yourDijitId').attr('displayedValue'); 

EDITAR : attr () se desaprobó en 1.5, en 1.5 y más allá, use get ()

Para obtener el valor de dijit.form.FilteringSelect

 dijit.byId('yourId').get('value'); 

Para obtener el valor mostrado de dijit.form.FilteringSelect

 dijit.byId('yourId').get('displayedValue'); 

Se encontró con el mismo problema y se le ocurrió esta solución.

 var optVal = dijit.byId("yourDijitId").item.value; 

El widget FilteringsSelect coloca el “Valor de visualización” en las propiedades displayValue y value . La única forma que he encontrado para obtener el valor de la opción es ir a través de la propiedad del item que enumera las propiedades de las opciones seleccionadas.

Descubrí que dojo crea 2 elementos. Uno que usa el nombre, que contiene el valor que usa el NOMBRE del elemento, y otro que contiene la etiqueta de la opción, que usa el ID del elemento. Como estaba usando document.getElementById (), esto devolvió el valor incorrecto. Usar el valor del nombre proporciona el resultado correcto.

Para compañeros Googlers que intentan encontrar el OBJETO SELECCIONADO en FilteringSelect:

 dijit.byId("yourDijitId").item 

se refiere al elemento seleccionado, en caso de que necesite acceder a otras propiedades del objeto.

(punta de sombrero a Bitwize para avanzar a la dirección correcta con dijit.byId("yourDijitId").item.value )