2009-12-04 4 views
9

Sto usando dijit.form.FilteringSelect per fornire un modo per selezionare i valori da un <selezionare>. Il problema è che quando si usa Dojo, l'etichetta viene restituita al posto del valore della s.Come ottenere il "valore" di FilteringSelect <select> nel dojo?

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

Dojo restituisce "uno" letterale se questa opzione è selezionata, al posto del valore di tale opzione, "1". Lo stesso vale per "due" e "2".

Se dojo viene rimosso da questo elemento, il valore viene restituito come previsto.

+0

Cosa vuoi dire "dojo sta tornando il valore". O stai postando questo modulo? In tal caso, tramite un normale post HTTP o una richiesta XHR dojo, oppure stai cercando di leggere il valore utilizzando dojo.getValue tramite un JS. Sarebbe necessario un set di codice più completo per aiutare. – Kitson

+0

Si comporta esattamente come dice mctom987. Questo potrebbe essere perché Swigley ha modificato la domanda. –

risposta

4

Ho scoperto che il dojo crea 2 elementi. Uno che usa il nome, che contiene il valore che usa il NOME dell'elemento, e un altro che contiene l'etichetta per l'opzione, che usa l'ID dell'elemento. Dal momento che stavo usando document.getElementById(), questo stava restituendo il valore sbagliato. L'utilizzo del valore dal nome fornisce il risultato corretto.

+0

Sì, quindi è necessario utilizzare l'API dijit che afferma Swingley. L'uso di document.getElementByid o jquery produrrà risultati diversi. – Eric

16

Il modo dojo per farlo sarebbe utilizzare dijit.byId ('yourDijitId'). Attr().

Per ottenere il valore che si desidera:

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

per ottenere il valore visualizzato nel filtraggio selezionare:

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

EDIT: attr() è stata sconsigliata a 1,5, at 1.5 and beyond, use get()

+3

attr è ora deprecato. Dovresti usare get invece. Per esempio. . Dijit.byId ('yourDijitId') get ('valore'); – voidstate

+0

Grazie, aggiornerò la mia risposta. –

6

Ranera nello stesso problema e ha trovato questa soluzione.

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

Il widget FilteringsSelect mette il "Display Valore" in entrambe le proprietà displayValue e value. L'unico modo che ho trovato per ottenere il valore dell'opzione è di passare attraverso la proprietà item che elenca le proprietà delle opzioni selezionate.

8

per ottenere il valore di dijit.form.FilteringSelect

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

Per ottenere il displayedValue di dijit.form.FilteringSelect

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

Per compagni di Googler là fuori cercando di trovare l'oggetto selezionato in FilteringSelect:

dijit.byId("yourDijitId").item 

fa riferimento all'elemento selezionato, nel caso sia necessario accedere alle altre proprietà dell'oggetto.

(Punta di cappello a Bitwize per pointin per giusta direzione con dijit.byId("yourDijitId").item.value)