Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the "value" of a FilteringSelect <select> in dojo?

I am using dijit.form.FilteringSelect to provide a way to select values from a <select>. The problem is, when using dojo, the label is returned instead of the value of the s.

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

Dojo is returning the literal "one" if that option is selected, instead of the value for that option, "1". The same is true for "two" and "2".

If dojo is removed from this element, the value is returned as expected.

like image 597
mctom987 Avatar asked Dec 04 '09 22:12

mctom987


4 Answers

The dojo way to do this would be to use dijit.byId('yourDijitId').attr().

To get the value you want:

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

To get the value displayed in the filtering select:

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

EDIT: attr() was deprecated at 1.5, at 1.5 and beyond, use get()

like image 168
Derek Swingley Avatar answered Nov 13 '22 07:11

Derek Swingley


To get the Value of dijit.form.FilteringSelect

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

To get the displayedValue of dijit.form.FilteringSelect

dijit.byId('yourId').get('displayedValue');
like image 33
Vijin Paulraj Avatar answered Nov 13 '22 08:11

Vijin Paulraj


Ran into the same issue and came up with this solution.

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

The FilteringsSelect widget puts the "Display Value" in both the displayValue and value properties. The only way that I have found to get the option value is to go through the item property which lists the selected options properties.

like image 30
Bitwize Avatar answered Nov 13 '22 07:11

Bitwize


I have found out that dojo creates 2 elements. One using the name, which contains the value which uses the NAME of the element, and another which contains the label for the option, which uses the ID of the element. Since I was using document.getElementById(), this was returning the wrong value. Using the value from the name provides the correct result.

like image 22
mctom987 Avatar answered Nov 13 '22 06:11

mctom987