Home » Jquery » jQuery Get Selected Option From Dropdown

jQuery Get Selected Option From Dropdown

Posted by: admin November 2, 2017 Leave a comment

Questions:

Usually I use $("#id").val() to return the value of the selected option, but this time it doesn’t work.
The selected tag has the id aioConceptName

html code

<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
    <option>choose io</option>
    <option>roma</option>
    <option>totti</option>
</select>
Answers:

For dropdown options you probably want something like this:

var conceptName = $('#aioConceptName').find(":selected").text();

The reason val() doesn’t do the trick is because clicking an option doesn’t change the value of the dropdown–it just adds the :selected property to the selected option which is a child of the dropdown.

Questions:
Answers:

Set the values for each of the options

<select id="aioConceptName">
    <option value="0">choose io</option>
    <option value="1">roma</option>
    <option value="2">totti</option>
</select>

$('#aioConceptName').val() didn’t work because .val() returns the value attribute. To have it work properly, the value attributes must be set on each <option>.

Now you can call $('#aioConceptName').val() instead of all this :selected voodoo being suggested by others.

Questions:
Answers:

I stumbled across this question and developed a more concise version of Elliot BOnneville’s answer:

var conceptName = $('#aioConceptName :selected').text();

or generically:

$('#id :pseudoclass')

This saves you an extra jQuery call, selects everything in one shot, and is more clear (my opinion).

Questions:
Answers:

Try this for value…

$("select#id_of_select_element option").filter(":selected").val();

or this for text…

$("select#id_of_select_element option").filter(":selected").text();

Questions:
Answers:

If you are in event context, in jQuery, you can retrieve the selected option element using :
$(this).find('option:selected') like this :

$('dropdown_selector').change(function() {
    //Use $option (with the "$") to see that the variable is a jQuery object
    var $option = $(this).find('option:selected');
    //Added with the EDIT
    var value = $option.val();//to get content of "value" attrib
    var text = $option.text();//to get <option>Text</option> content
});

Edit

As mentioned by PossessWithin, My answer just answer to the question : How to select selected “Option”.

Next, to get the option value, use option.val().

Questions:
Answers:

Have you considered using plain old javascript?

var box = document.getElementById('aioConceptName');

conceptName = box.options[box.selectedIndex].text;

See also Getting an option text/value with JavaScript

Questions:
Answers:
$('#aioConceptName option:selected').val();

Questions:
Answers:

Using jQuery, just add a change event and get selected value or text within that handler.

If you need selected text, please use this code:

$("#aioConceptName").change(function () {
    alert($("#aioConceptName :selected").text())
});

Or if you need selected value, please use this code:

$("#aioConceptName").change(function () {
    alert($("#aioConceptName :selected").attr('value'))
});

Questions:
Answers:

Use the jQuery.val() function for select elements, too:

The .val() method is primarily used to get the values of form elements
such as input, select and textarea. In the case of select elements, it
returns null when no option is selected and an array containing the
value of each selected option when there is at least one and it is
possible to select more because the multiple attribute is present.

$(function() {
  $("#aioConceptName").on("change", function() {
    $("#debug").text($("#aioConceptName").val());
  }).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<select id="aioConceptName">
  <option>choose io</option>
  <option>roma</option>
  <option>totti</option>
</select>
<div id="debug"></div>

Questions:
Answers:
<select id="form-s" multiple="multiple">
    <option selected>city1</option>
    <option selected value="c2">city2</option>
    <option value="c3">city3</option>
</select>   
<select id="aioConceptName">
    <option value="s1" selected >choose io</option>
    <option value="s2">roma </option>
    <option value="s3">totti</option>
</select>
<select id="test">
    <option value="s4">paloma</option>
    <option value="s5" selected >foo</option>
    <option value="s6">bar</option>
</select>
<script>
$('select').change(function() {
    var a=$(':selected').text(); // "city1city2choose iofoo"
    var b=$(':selected').val();  // "city1" - selects just first query !
    //but..
    var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"]
        return $(this).text();
    }); 
    var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"]
        return $(this).val();
    });
    console.log(a,b,c,d);
});
</script>

Questions:
Answers:

For anyone who found out that best answer don’t work.

Try to use:

  $( "#aioConceptName option:selected" ).attr("value");

Works for me in recent projects so it is worth to look on it.

Questions:
Answers:

Reading the value (not the text) of a select:

    var status = $("#Status").val();
    var status = $("#Status")[0].value;
    var status = $('#Status option:selected').val();

How to disable a select?
in both variants, value can be changed using:

A

User can not interact with the dropdown. And he doesent know what other options might exists.

    $('#Status').prop('disabled', true);

B

User can see the options in the dropdown but all of them are disabled:

    $('#Status option').attr('disabled', true);

In this case, $(“#Status”).val() will only work for jQuery versions smaller than 1.9.0. All other variants will work.

How to update a disabled select?

From code behind you can still update the value in your select. It is disabled only for users:

    $("#Status").val(2);

In some cases you might need to fire events:

    $("#Status").val(2).change();

Questions:
Answers:

Just this should work:

var conceptName = $('#aioConceptName').val();

Questions:
Answers:

If you want to grab the ‘value’ attribute instead of the text node, this will work for you:

var conceptName = $('#aioConceptName').find(":selected").attr('value');

Questions:
Answers:

I hope this also helps to understand better and helps
try this below,
$('select[id="aioConceptName[]"] option:selected').each(function(key,value){
options2[$(this).val()] = $(this).text();
console.log(JSON.stringify(options2));
});

to more details please
http://www.drtuts.com/get-value-multi-select-dropdown-without-value-attribute-using-jquery/