2009-12-04 9 views
9

Estoy usando dijit.form.FilteringSelect para proporcionar una forma de seleccionar valores de <seleccione>. El problema es que cuando se usa dojo, se devuelve la etiqueta en lugar del valor de la s.¿Cómo obtener el "valor" de un FilteringSelect <select> en dojo?

Por ejemplo:
<select name="test" dojoType="dijit.form.FilteringSelect">
<option value="1">One</option>
<option value="2">Two</option>
</select>

Dojo está devolviendo el "uno" literal si se selecciona esta 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.

+0

¿Qué quiere decir "dojo está devolviendo el valor". O publicando este formulario? Si es así, cómo, a través de una publicación HTTP normal o una solicitud XHR de dojo, o está intentando leer el valor mediante el uso de dojo.getValue a través de un JS. Se necesitaría un conjunto de códigos más completo para ayudar. – Kitson

+0

Se comporta exactamente como dice mctom987. Eso podría ser porque Swigley editó la pregunta. –

Respuesta

4

He descubierto 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.

+0

Sí, así que debes usar la API de dijit que Swingley indica. Usar document.getElementByid o jquery arrojará resultados diferentes. – Eric

16

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

Para obtener el valor que desee:

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

para obtener el valor mostrado en el filtrado seleccione:

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

EDITAR: attr() se desaprobó a 1,5, at 1.5 and beyond, use get()

+3

attr ahora está en desuso. Deberías usar get en su lugar. P.ej. dijit.byId ('yourDijitId'). get ('valor'); – voidstate

+0

Gracias, actualizaré mi respuesta. –

6

Se metió en el mismo problema y se le ocurrió esta solución.

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

El widget de FilteringsSelect pone el "valor de indicación" tanto en el displayValue y value propiedades. La única forma que he encontrado para obtener el valor de la opción es ir a través de la propiedad item que enumera las propiedades de opciones seleccionadas.

8

para obtener el valor de dijit.form.FilteringSelect

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

Para obtener el displayedValue de dijit.form.FilteringSelect

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

Para los compañeros de Google por ahí tratando de encontrar el OBJETO SELECCIONADO en el filtradoSelección:

dijit.byId("yourDijitId").item 

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

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

Cuestiones relacionadas